用 SQL injection 撿到 40+ 台機器跟幾千人個資的小故事


HITCON 0 Day: https://zeroday.hitcon.org/vulnerability/ZD-2021-00767

有點忘記起因了,有一天我在 Shodan 上面亂逛時,發現到了一批在台灣的電腦,都開啟了 8081 的 Web Port,它們的 Banner 都寫了 “樂晴牙醫管理系統”

因為我有在瀏覽器安裝 DotGit , 一點進去之後就叫了,這個網站的目錄底下存在著 .git 因此可以使用 GitHack 之類的東西進行還原。

跑下去之後偷偷看了一下程式碼,一看不得了,竟然有兩個可以任意登入的方法?!

漏洞 1

在程式碼的主要登入邏輯中 ajax/checkLogin_ajax.php 可以看到

$sql="select sfsn,sfno,sfpasswd,position,isowner,sfname from staff where sfno='$id' and sfpasswd='$password' ";

這是一個超級超級裸的 SQL injection ,使用所謂的 SQL injection 萬用密碼就可以進行登入了 QQ。

  • 帳號 : ' or 1=1 --
  • 密碼 : 任意字串

漏洞 2 (Feature?

繼續的看同一個檔案,會發現在原始碼中留了一個寫死的預設密碼

if ($id!='' && $password!=''){
	if ($id=='leyan' && $password=='0429'){
		$has=1;
		session_start();
		$_SESSION['staffid']="leyan";
		$_SESSION['staffpw']="0429";
		$_SESSION['staffposition']='S';
		$_SESSION['isManager']='1';
		$_SESSION['staffname']='Leyan';
		$_SESSION['staffsfsn']=0;

因此只需要透過帳號 leyan 以及密碼 0429 就能登入所有的系統

危害程度

該系統中有非常多牙醫診所以及病患的私密資料,如果外洩的話將造成滿嚴重的問題 QQ,內容包含但不限於病患生日、身分證字號、病歷資料、診所財務報表等。

漏洞回報日程

  • 2021/10/20 發現漏洞,提交至 HITCON 0 day
  • 2021/10/23 提交至 TWCERTCC-CVE
  • 2021/11/2 TWCERTCC-CVE 請求複測
  • 2021/12/14 HITCON 0 day 請求複測
  • 2021/12/19 漏洞公開
  • 2022/4/14 公開 CVE-2022-22055CVE-2022-22056

,

發表迴響