---
# System prepended metadata

title: DVWA Weak Session ID (教學用)
tags: [DVWA]

---

# DVWA Weak Session ID (教學用)
###### tags: `DVWA`
## low

這題是在模擬不同使用者登入的 session id 主要是 session 規則太好猜，身分容易被冒用。




每次單擊該按鈕時，此頁面都會設置一個名為 dvwaSession 的新 cookie。
### html
```htmlembedded=
<form method="post">
    <input type="submit" value="Generate">
</form>
```

### php
```php=

<?php

$html = "";


if ($_SERVER['REQUEST_METHOD'] == "POST") {
    
    //如果沒 last_session_id 就設定0
    //代表第一次登入
    if (!isset ($_SESSION['last_session_id'])) {
        $_SESSION['last_session_id'] = 0;
    }
    
    
    //如果有 last_session_id 就+1
    $_SESSION['last_session_id']++;
    
    $cookie_value = $_SESSION['last_session_id'];
    
    //set cookie 
    setcookie("dvwaSession", $cookie_value);
}
?>
```




點兩下 cookie 多了一個 dvwaSession
```
dvwaSession=1
dvwaSession=2
.
.
.
.
```








## medium


跟上面一樣基本一樣。
### 有時session 為了單一性不重複，會加上時間來運算。

```
dvwaSession=1685158214

dvwaSession=1685158280
.
.
.
```

### timestamp(時間戳記)  工具
https://www.epochconverter.com/

```
1685158214
Assuming that this timestamp is in seconds:
GMT: 2023年5月27日Saturday 03:30:14
Your time zone: 2023年5月27日星期六 11:30:14 GMT+08:00




1685158280
Assuming that this timestamp is in seconds:
GMT: 2023年5月27日Saturday 03:31:20
Your time zone: 2023年5月27日星期六 11:31:20 GMT+08:00


```





## high

跟上面一樣基本一樣。


dvwaSession


看起來使用 hash
```
c4ca4238a0b923820dcc509a6f75849b

c81e728d9d4c2f636f067f89cc14862c
```

### hash identifer 識別hash 類別
https://hashes.com/en/tools/hash_identifier

### result 
```
c4ca4238a0b923820dcc509a6f75849b - Possible algorithms: MD5

c81e728d9d4c2f636f067f89cc14862c - 2 - Possible algorithms: MD5

```


### decrypt hash
```
c4ca4238a0b923820dcc509a6f75849b:1
c81e728d9d4c2f636f067f89cc14862c:2
```
所以知道 一樣是 1,2,3,4,5,6,..... 只不過被hash了。




---
### burpsuite 改 cookie

重新抓第一次
```
POST /vulnerabilities/weak_id/ HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/113.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-TW,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 0
Origin: http://localhost
Connection: close
Referer: http://localhost/vulnerabilities/weak_id/
Cookie: PHPSESSID=cea399ecd6a812d693aa7679fcb4de03; security=low
Upgrade-Insecure-Requests: 1


```

第二次
dvwaSession=1
```http
POST /vulnerabilities/weak_id/ HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/113.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-TW,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 0
Origin: http://localhost
Connection: close
Referer: http://localhost/vulnerabilities/weak_id/
Cookie: dvwaSession=1; PHPSESSID=cea399ecd6a812d693aa7679fcb4de03; security=low
Upgrade-Insecure-Requests: 1

```



第三次
改 dvwaSession=100
```http
POST /vulnerabilities/weak_id/ HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:109.0) Gecko/20100101 Firefox/113.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-TW,zh;q=0.8,en-US;q=0.5,en;q=0.3
Accept-Encoding: gzip, deflate
Content-Type: application/x-www-form-urlencoded
Content-Length: 0
Origin: http://localhost
Connection: close
Referer: http://localhost/vulnerabilities/weak_id/
Cookie: dvwaSession=100; PHPSESSID=cea399ecd6a812d693aa7679fcb4de03; security=low
Upgrade-Insecure-Requests: 1

```

發現沒卵用，這題的概念就是找出session 規律，實戰中你可以透過猜測，或是盜取cookie來獲得登入狀態。

## 實驗(課外題)

### 既然這題沒用，那我們就來做個實驗 dvwa 剛好需要登入，他肯定也有session 機制。


實驗流程:

* 兩個不同browser
firefox, google 


這邊我們要再google 登入dvwa 然後假裝偷到他的session，放給 firefox。 冒充使用者。




google
```
PHPSESSID=fdf8d4b2bbd3393fd4acf8423c54b74b
```

### 修改firefox cookie
* 方式有很多種。
1. 你可以用 burpsuite 把每個包cookie 都換chrome的
2. firefox 安裝 eidt this cookie 插件(修改cookie 的插件都可以)。


### 使用插件很簡單就是修改值

修改後我們觀察 chrome 已登入dvwa 的頁面在哪。

這個頁面是登入狀態下才能看的。
```
http://localhost/security.php
```

firefox 直接 enter 進入 你會發現不用輸入帳密，你已經登入了。

這就是冒用 session。




## impossible


```php
 <?php

$html = "";

if ($_SERVER['REQUEST_METHOD'] == "POST") {
    
    $cookie_value = sha1(mt_rand() . time() . "Impossible");
    
    setcookie("dvwaSession", $cookie_value, time()+3600, "/vulnerabilities/weak_id/", $_SERVER['HTTP_HOST'], true, true);
}
?>

```


可以看到使用了 sha1(隨機數+ 時間 + Impossible 字段)，太難猜了。